`
flashsword20
  • 浏览: 9225 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类
最新评论

分享一个自己写的爬虫框架

阅读更多
之前写过一年的垂直爬虫(抓博客什么的),对于各种重复代码很厌倦,后来参考了据说是最优秀的爬虫框架scrapy,写了一个Java版的框架webmagic。
自己用着还是挺顺手的,底层封装了HttpClient、Jsoup、HtmlCleaner,支持多线程,也包括url去重、重试、编码判断什么的。希望能帮到把各位自己手写爬虫代码的同学。
代码不长,自认为模块化的也挺清晰,如果对爬虫感兴趣的可以看一看。
以下是使用webmagic抓取某个iteye博客的所有文章,并提取标题和正文的爬虫代码:
public class IteyeBlogProcessor implements PageProcessor {

    private Site site;

    @Override
    public void process(Page page) {
        page.addTargetRequests(page.getHtml().links().regex(".*yanghaoli\\.iteye\\.com/blog/\\d+").all());
        page.putField("title",page.getHtml().xpath("//title").toString());
        //自动抽取正文,用到了readability
        page.putField("content",page.getHtml().smartContent().toString());
    }

    @Override
    public Site getSite() {
        if (site == null) {
            site = Site.me().setDomain("yanghaoli.iteye.com").addStartUrl("http://yanghaoli.iteye.com/").
            .setSleepTime(100).setRetryTimes(3);
        }
        return site;
    }

    public static void main(String[] args) {
        Spider.create(new IteyeBlogProcessor()).thread(5).pipeline(new FilePipeline()).run();
    }
}


已收录到oschina:http://www.oschina.net/p/webmagic
github:https://github.com/code4craft/webmagic
分享到:
评论

相关推荐

    自己动手写开源爬虫框架 Slit

    【标题】"自己动手写开源爬虫框架 Slit"揭示了本文将介绍如何构建一个开源的网络爬虫框架。在IT行业中,爬虫框架对于数据挖掘、数据分析以及自动化信息提取等任务至关重要。Slit这个名字可能是“Simple Lightweight ...

    用Python写网络爬虫 PDF

    10. **爬虫框架**:Scrapy是一个强大的Python爬虫框架,它包含了项目结构、中间件、调度器等功能,适用于大型、复杂的爬虫项目。 11. **异常处理和错误恢复**:编写爬虫时,必须考虑到可能出现的各种异常情况,如...

    用Python写爬虫

    Scarpy是一个在Python编写的爬虫框架,具有强大的选择器和管道机制,让爬虫开发更为方便和高效。Portia则是一个可视化爬虫工具,可以在没有编写代码的情况下抓取网页数据,非常适合初学者使用。 最后,书籍通过实例...

    自己动手写网络爬虫

    在《自己动手写网络爬虫》的书中,作者分享了完整的源码,读者可以跟随书中的示例逐步实践,掌握网络爬虫的制作过程。通过这个过程,你不仅可以学到网络爬虫的基本技术,还能了解整个数据获取流程,为未来的数据分析...

    从零开始用Python语言写爬虫程序分享.docx

    2. Scrapy框架:Scrapy是一个强大的Python爬虫框架,提供了构建爬虫项目所需的结构和功能。 3. 开发环境:可以选择IDE(如PyCharm)或简单的文本编辑器,用于编写和运行Python代码。 **创建Scrapy项目** 首先,创建...

    Python爬虫框架scrapy实现的文件下载功能示例

    我们在写普通脚本的时候,从一个网站拿到一个文件的下载url,然后下载,直接将数据写入文件或者保存下来,但是这个需要我们自己一点一点的写出来,而且反复利用率并不高,为了不重复造轮子,scrapy提供很流畅的下载...

    php写的开源爬虫sphider

    进阶用户可能会转向更强大的爬虫框架,如Python的Scrapy,以应对更复杂的爬虫需求。 7. **社区支持与资源** 开源项目Sphider有活跃的开发者社区,用户可以在论坛上交流问题、分享经验,获取最新的更新和补丁。此外...

    Python-crawler:从头开始系统化的学习如何写Python爬虫。Python版本3.6

    同时也是为了分享一下如何能更高效率的学习写爬虫。 IDE:Vscode Python版本:3.6 知乎专栏: : 详细学习路径: 一:美丽的汤爬虫 请求库的安装与使用 安装美丽的汤爬虫环境 美丽的汤的解析器 re库正则表达式的...

    Android+jsoup Java爬虫做的一个 阅读app。(有源代码,随手写的 可能代码有点乱)

    总结起来,这个项目展示了如何结合Android和Jsoup来构建一个简单的阅读应用,涉及到了网络爬虫技术、UI设计、数据存储、异步处理等多个关键知识点。对于想学习Android开发和网络爬虫的人来说,这是一个很好的实践...

    一个用C#写的搜索引擎

    【标题】"一个用C#写的搜索引擎"是一个基于C#编程语言开发的搜索应用程序,它展示了如何在.NET框架下构建类似Google或Bing这样的信息检索系统。C#是一种面向对象的、类型安全的编程语言,由微软公司开发,广泛应用于...

    通过Python爬虫自建豆瓣电影API.zip

    在开发微信小程序「影库MDb」时,使用了豆瓣api来获取电影信息,后来由于豆瓣apikey失效了,小程序就无法正常访问,而个人主体貌似无法申请官方apikey,所以自己抽时间通过爬虫的方式写了个电影接口。这里把项目中的...

    python爬虫基础知识点整理

    首先爬虫是什么? 网络爬虫(又被称为网页蜘蛛,网络机器人...首先,我们要用Python写爬虫,肯定要了解Python的基础吧,万丈高楼平地起,不能忘啦那地基,哈哈,那么我就分享一下自己曾经看过的一些Python教程,小伙伴

    delphi抓取网页信息例子【附源码哟】

    这是由delphi xe10.1写的,里面都是中文变量,应该很容易看懂 我也是新手,在网上试着教程做,终于看懂了,于是自己简化和修改,让新的菜鸟们更容易上手理解。 内附程序演示以及源码分享,还有原始网页信息看代码

    Spiders:平时写的一些爬虫

    本项目“Spiders:平时写的一些爬虫”显然是一个个人开发的爬虫代码库,作者分享了自己在日常工作中编写的爬虫源码。这个开源项目对于初学者和有经验的开发者来说都是一个宝贵的资源,可以从中学习到如何构建和优化...

    为了方便初学者更加快捷学习Python爬虫写的教程例子,欢迎大家参考并提出建议!.zip

    Python爬虫是初学者入门编程领域的一个热门选择,它能够帮助你从互联网上自动获取大量数据,无论是进行数据分析、信息挖掘还是网站自动化测试,都非常实用。这个教程例子旨在为初学者提供一个简单易懂的学习路径,让...

    什么值得买 Python 爬虫项目.zip

    "什么值得买"是一个知名的购物分享平台,用户可以在这里找到各种优惠信息、商品推荐和消费心得。本Python爬虫项目,名为"SmzdmSpider-master",旨在自动化地抓取该网站上的数据,如热门商品、优惠券信息、用户评价等...

    Python-SQLflow基于python开发的分布式机器学习平台支持通过写sql的方式运行spark机器学习算法爬虫

    Apache Spark是一个强大的开源大数据处理框架,能够处理大规模数据集。通过SQLflow,用户可以利用Spark的并行计算能力,直接在SQL语句中运行复杂的分布式机器学习算法,如逻辑回归、随机森林、梯度提升机等,甚至...

    程序员如何写一份更好的简历?-附带模板

    简历中的常见错误 1、技能信息过多,缺乏重点 越简洁清晰的简历,HR 反而越有可能认真看。 应该按照下面简化技能信息: ...写完简历之后一定要自己仔细检查,再请一位朋友看一遍,请求中肯的建议。

    C#最常用的100多个类库集合分享

    "DotNetUtilities"可能是一个包含这些实用类库的综合工具集,可以简化开发过程中对上述功能的调用。 总之,C#丰富的类库极大地扩展了其功能,使得开发者能够快速构建各种复杂的应用程序。通过理解和运用这些类库,...

Global site tag (gtag.js) - Google Analytics