NEOCrawler(中文名:牛咖)-爬虫系统

NEOCrawler(中文名:牛咖)-爬虫系统

2022-09-14 0 534
资源编号 38338 最近更新 2022-09-14
¥ 0人民币 升级VIP
立即下载 注意事项
下载不了?请联系网站客服提交链接错误!
增值服务: 安装指导 环境配置 二次开发 模板修改 源码安装

本期推荐的 NEOCrawler(中文名:牛咖),是nodejs、redis、phantomjs实现的爬虫系统。代码完全开源,适合用于垂直领域的数据采集和爬虫二次开发。

主要特点

使用nodejs实现,javascript简单、高效、易学、为爬虫的开发以及爬虫使用者的二次开发节约不少时间;nodejs使用Google V8作为运行引擎,性能可观;由于nodejs语言本身非阻塞、异步的特性,运行爬虫这类IO密集CPU需求不敏感的系统表现很出色,与其他语言的版本简单的比较,开发量小于C/C++/JAVA,性能高于JAVA的多线程实现以及Python的异步和携程方式的实现。

调度中心负责网址的调度,爬虫进程分布式运行,即中央调度器统一决策单个时间片内抓取哪些网址,并协调各爬虫工作,爬虫单点故障不影响整体系统。

爬虫在抓取时就对网页进行了结构化解析,摘取到需要的数据字段,入库时不仅是网页源代码还有结构化了的各字段数据,不仅使得网页抓取后数据立马可用,而且便于实现入库时的精准化的内容排重。

集成了phantomjs。phantomjs是无需图形界面环境的网页浏览器实现,利用它可以抓取需要js执行才产生内容的网页。通过js语句执行页面上的用户动作,实现表单填充提交后再抓取下一页内容、点击按钮后页面跳转再抓取下一页内容等。

集成了代理IP使用的功能,此项功能针对反抓取的网站(限单IP下访问数、流量、智能判断爬虫的),需要提供可用的代理IP,爬虫会自主选择针对源网站还可以访问的代理IP地址来访问,源网站无法屏蔽抓取。

可配置项:

1). 用正则表达式来描述,类似的网页归为一类,使用相同的规则。一个爬虫系统(下面几条指的都是某类网址可配置项);

2). 起始地址、抓取方式、存储位置、页面处理方式等;

3). 需要收集的链接规则,用CSS选择符限定爬虫只收集出现在页面中某个位置的链接;

3). 页面摘取规则,可以用CSS选择符、正则表达式来定位每个字段内容要抽取的位置;

4). 预定义要在页面打开后注入执行的js语句;

5). 网页预设的cookie;

6). 评判该类网页返回是否正常的规则,通常是指定一些网页返回正常后页面必然存在的关键词让爬虫检测;

7). 评判数据摘取是否完整的规则,摘取字段中选取几个非常必要的字段作为摘取是否完整的评判标准;

8). 该类网页的调度权重(优先级)、周期(多久后重新抓取更新)。

架构

NEOCrawler(中文名:牛咖)-爬虫系统

图中黄色部分为爬虫系统的各个子系统

SuperScheduler是中央调度器,Spider爬虫将收集到的网址放入到各类网址所对对应的网址库中,SuperScheduler会依据调度规则从各类网址库抽取相应量的网址放入待抓取队列。

Spider是分布式运行的爬虫程序,从调度器调度好的待抓取队列中取出任务进行抓取,将发现的网址放入网址库,摘取的内容存库,将爬虫程序分为core一个核心和download、extract、pipeline 4个中间件,是为了在爬虫实例中能够比较容易的重新定制其中某块功能。

ProxyRouter是在使用代理IP的时候将爬虫请求智能路由给可用代理IP的。

Webconfig是web的爬虫规则配置后台。

运行步骤

运行环境准备

  • 安装好nodejs 环境,从git仓库clone源码到本地,在文件夹位置打开命令提示符,运行“npm install”安装依赖的模块;
  • redis server安装(同时支持redis和ssdb,从节约内存的角度考虑,可以使用ssdb,在setting.json可以指定类型,下面会提到)。
  • hbase环境,抓取到网页、摘取到的数据将存储到hbase,hbase安装完毕后要将http rest服务开启,后面的配置中会用到,如果要使用其他的数据库存储,可以不安装hbase,下面的章节中将会讲到如何关闭hbase功能以及定制化自己的存储。hbase shell中初始化hbase 列簇:
create 'crawled',{NAME => 'basic', VERSIONS => 3},{NAME=>"data",VERSIONS=>3},{NAME => 'extra', VERSIONS => 3}
create 'crawled_bin',{NAME => 'basic', VERSIONS => 3},{NAME=>"binary",VERSIONS=>3}

推荐使用hbase rest方式, 当你启动hbase后, 在hbase目录的bin子目录下执行以下命令可以启动hbase rest:

./hbase-daemon.sh start rest

默认端口为8080, 下面配置中会用到.

##【实例配置】

实例在instance目录下,拷贝一份example,重命名其他的实例名,例如:abc,以下说明中均使用该实例名举例。

编辑instance/abc/setting.json

{
    /*注意:此处用于解释各项配置,真正的setting.json中不能包含注释*/

    "driller_info_redis_db":["127.0.0.1",6379,0],/*网址规则配置信息存储位置,最后一个数字表示redis的第几个数据库*/
    "url_info_redis_db":["127.0.0.1",6379,1],/*网址信息存储位置*/
    "url_report_redis_db":["127.0.0.1",6380,2],/*抓取错误信息存储位置*/
    "proxy_info_redis_db":["127.0.0.1",6379,3],/*http代理网址存储位置*/
    "use_proxy":false,/*是否使用代理服务*/
    "proxy_router":"127.0.0.1:2013",/*使用代理服务的情况下,代理服务的路由中心地址*/
    "download_timeout":60,/*下载超时时间,秒,不等同于相应超时*/
    "save_content_to_hbase":false,/*是否将抓取信息存储到hbase,目前只在0.94下测试过*/
    "crawled_hbase_conf":["localhost",8080],/*hbase rest的配置,你可以使用tcp方式连接,配置为{"zookeeperHosts": ["localhost:2181"],"zookeeperRoot": "/hbase"},此模式下有OOM Bug,不建议使用*/
    "crawled_hbase_table":"crawled",/*抓取的数据保存在hbase的表*/
    "crawled_hbase_bin_table":"crawled_bin",/*抓取的二进制数据保存在hbase的表*/
    "statistic_mysql_db":["127.0.0.1",3306,"crawling","crawler","123"],/*用来存储抓取日志分析结果,需要结合flume来实现,一般不使用此项*/
    "check_driller_rules_interval":120,/*多久检测一次网址规则的变化以便热刷新到运行中的爬虫*/
    "spider_concurrency":5,/*爬虫的抓取页面并发请求数*/
    "spider_request_delay":0,/*两个并发请求之间的间隔时间,秒*/
    "schedule_interval":60,/*调度器两次调度的间隔时间*/
    "schedule_quantity_limitation":200,/*调度器给爬虫的最大网址待抓取数量*/
    "download_retry":3,/*错误重试次数*/
    "log_level":"DEBUG",/*日志级别*/
    "use_ssdb":false,/*是否使用ssdb*/
    "to_much_fail_exit":false,/*错误太多的时候是否自动终止爬虫*/
    "keep_link_relation":false/*链接库里是否存储链接间关系*/
}

运行

在WEB界面配置抓取规则

调试单个网址抓取是否正常

运行调度器(调度器启动一个即可)

如果使用代理IP抓取的话启动代理路由

启动爬虫(爬虫可以分布式启动多个)

以下是具体的启动命令

1.运行WEB配置(配置规则参考下一章说明)

node run.js -i abc -a config -p 8888

在浏览器打开 http://localhost:8888 可以在web界面配置抓取规则

2.测试单个页面抓取

node run.js -i abc -a test -l "http://domain/page/"

3.运行调度器

node run.js -i abc -a schedule
  • -i指定了实例名,-a指定了动作schedule,下同

4.运行代理路由 仅使用了代理IP抓取的情况下才需要运行代理路由

node run.js -i abc -a proxy -p 2013

此处的-p指定代理路由的端口,如果在本机运行,setting.json的proxy_router及端口为 127.0.0.1:2013

5.运行爬虫

node run.js -i abc -a crawl

可以在instance/example/logs 下查看输出日志debug-result.json

Redis/ssdb数据结构

理解数据结构, 有助于你熟悉整套系统进行二次开发. neocrawler用到4个存储空间, driller_info_redis_db, url_info_redis_db, url_report_redis_db, proxy_info_redis_db, 可以在实例下的settings.json配置, 4个空间存储的类别不同, 键名不会冲突, 可以将4个空间指向一个redis/ssdb库, 每个空间的增长量不一样, 如果使用redis建议将每个空间指向一个db, 有条件的情况下一个空间一个redis。

driller_info_redis_db

存储了抓取规则及网址

url_info_redis_db

该空间存储了网址信息, 抓取运行时间越长这里的数据量会越大

url_report_redis_db

该空间存储爬虫抓取报告

proxy_info_redis_db

该空间存储代理IP相关的数据

资源下载此资源为免费资源立即下载

申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

七爪网 免费源码 NEOCrawler(中文名:牛咖)-爬虫系统 https://www.7claw.com/38338.html

分享免费的开源源码

常见问题
  • 1、自动:拍下后,点击(下载)链接即可下载;2、手动:拍下后,联系卖家发放即可或者联系官方找开发者发货。
查看详情
  • 1、源码默认交易周期:手动发货商品为1-3天,并且用户付款金额将会进入平台担保直到交易完成或者3-7天即可发放,如遇纠纷无限期延长收款金额直至纠纷解决或者退款!;
查看详情
  • 1、七爪会对双方交易的过程及交易商品的快照进行永久存档,以确保交易的真实、有效、安全! 2、七爪无法对如“永久包更新”、“永久技术支持”等类似交易之后的商家承诺做担保,请买家自行鉴别; 3、在源码同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外); 4、在没有”无任何正当退款依据”的前提下,商品写有”一旦售出,概不支持退款”等类似的声明,视为无效声明; 5、在未拍下前,双方在QQ上所商定的交易内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准); 6、因聊天记录可作为纠纷评判依据,故双方联系时,只与对方在七爪上所留的QQ、手机号沟通,以防对方不承认自我承诺。 7、虽然交易产生纠纷的几率很小,但一定要保留如聊天记录、手机短信等这样的重要信息,以防产生纠纷时便于七爪介入快速处理。
查看详情
  • 1、七爪作为第三方中介平台,依据交易合同(商品描述、交易前商定的内容)来保障交易的安全及买卖双方的权益; 2、非平台线上交易的项目,出现任何后果均与互站无关;无论卖家以何理由要求线下交易的,请联系管理举报。
查看详情

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务