• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

nlp-spider-dynamic: nlp项目基础框架:爬虫,针对动态网页(JS)的专有爬虫 ...

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

nlp-spider-dynamic

开源软件地址:

https://gitee.com/gitclebeg/nlp-spider-dynamic

开源软件介绍:

nlp-spider-dynamic

专门为自然语言处理系统组件爬取数据的组件,动态信息爬取的网络爬虫

这个爬虫的特点是主要针对动态网页信息爬取的垂直爬虫。设计思路与八爪鱼采集器类似。

注意此爬虫纯属个人开发兴趣而开发,有任何问题欢迎各位提交bug。邮箱地址:[email protected]

目前正在完善,有些功能可能有bug,敬请期待...

1、说明

动态网站的抓取和静态网站抓取最大的不同就是要解析JS。

    1. 一种方式是跟踪JS的真实请求(难度大)
    1. 一种方式是直接模拟浏览器解析JS本程序采用第二种方式,利用Selenium浏览器测试框架,实现了一个可以解析页面JS的 web 网络爬虫,从而可以抓取动态网页信息。

2、新手教程

  1. driver 目录(存放的是selenium需要运行的driver)不同的平台,请参考这个教程,自行编译里面目前只是提供windows GhostDriver已经集成在 Phantomjs.exe

  2. 简单爬取例子在tasks\test_ghost下面的配置文件分别举例说明如何配置爬虫抓取各种网页,下面是每个文件的说明:

jd_1product.xml				演示如何抓取一个简单商品页上的信息(商品名,动态评论数)jd_products_comments.xml	演示如何抓取一个商品的评论(内容循环提取)jd_shop_allproducts.cml		将演示如何循环抓取一个店铺的所有商品(翻页循环抓取)

其它任务类似,数据保存的名字,以及方式都是在配置文件中定义的。配置好一只爬虫之后,启动程序爬虫就会自动生成需要保存的数据文件。

  1. 爬虫执行执行 org.wisdomdata.main.MainCrawler将配置文件所在地址添加到 tasksFiles即可启动程序,目前只能支持一只爬虫,将来可能会支持分布式爬虫。

3、架构设计

采用Selenium,一个最大的限制是多线程的并发控制。最好的方式是采用WebDriver单例模式。采用Spring框架可以容易实现。

垂直网络爬虫不仅仅只是下载页面,下载页面只是它的一个组件。

    1. 页面处理
还需要针对性的页面进行处理,比如:在页面上点击一个按钮(本质是执行一段JS);在页面上跳转直接(比如:加载一个新的页面)碰到特殊情况处理(比如:弹出验证码输入框,提取不到页面内容等等)页面内容提取(包括链接,以及主题指标数据)
    1. 链接处理
如何保存批量提取的链接?垂直爬虫得到的链接比较少量。
    1. 爬取策略
如何增量爬取数据?如何解决爬虫被封的问题?

这些过程抽象出来,非常符合编程语言里面的三大程序流程结构:

1、顺序 2、循环 3、条件

由这三个组合起来就可以完成任何复杂的程序流程。

一个垂直网站的爬取,也可以用上面的三个过程组合起来进行描述:比如在爬取一个网站的时候:

do for 循环列表页(循环方式 点击下一页,结束条件(指定最大次数等))	do for 每一个内容页面(循环方式 依次抓取,结束条件)		提取信息(异步提取,同步提取)	done点击下一页done

比如更加复杂一点的网站:

do	填写表单,点击提交,指定页面跳转donedo then	do 循环列表页(循环方式 点击下一页,结束条件(指定最大次数等))		提取信息	done	do then		点击某个按钮		do			do for 循环内容				提取信息(					if (未提取到信息,或者提取到信息有什么问题)						dosome					endif			done		done	点击按钮	donedone

基于这样的逻辑,开发了这个系统。

4、如何结合设计一只爬虫

爬虫设计抽象出来就是程序设计语言都有的三个处理结构。

  • 1) 业务逻辑处理器(包含多个内容抽取器)
判断(需要判断条件,符合就执行,不符合就执行另外的)循环(需要开始条件,循环间隔,循环结束条件)顺序(就是一系列执行下去)
  • 2) 内容抽取器(底层由一系列原子抽取动作组成,这些原始抽象动作都是需要先满足一定条件的)
判断(需要判断条件,符合就执行,不符合就执行另外的)循环(需要开始条件,循环间隔,循环结束条件)顺序(就是一系列执行下去)
  • 3) 状态转移动作 *

每一个状态转移动作之后都会产生一个新的页面,而且跳转之前都需要判断

比如:(事务支持,要么原子动作全部执行,要么全部失败)

点击下一页(是否存在点击下一页这个按钮,没有怎么办?)点击某个按钮加载一段新页面(是否存在需要这个按钮,没有怎么办?)跳转到一个新的页面(新页面链接是否是有效链接?)

(上面的每一个动作里面包含原子动作,执行某个点击按钮的动作)

  • 4) 抽取信息去重保存组件

上面每一个处理过程都是嵌套的,也就是说可能循环里面有判断,判断里面有循环等等####而且相对于爬虫来说:####上面的每一个处理过程,都必须打开一个页面作为基准。

业务逻辑处理器里面包含转移动作组合转移动作组里面包含系列内容抽取器内容抽取器里面可能包含业务逻辑组

4.1 举例说明:

1) 单独爬取一个网站,需要的组件顺序执行处理器1(    跳转到一个新页面的转移动作(        顺序抽取器(多个单元抽取器,去重保存组件)2) 登录页面抓取顺序执行处理器2(    登录动作组(无抽取动作)    顺序执行处理器13) 循环页面抓取循环执行处理器2(    循环初始化条件    循环执行动作(抽取器)    循环结束条件4) 页面点击抓取顺序执行处理器3(    跳转到一个新页面的转移动作(        顺序抽取器(多个单元抽取器,去重保存组件)    点击页面按钮动作组(         顺序抽取器(多个单元抽取器,去重保存组件)?

这上面四种情况组合起来还能组合成更加复杂的情况。抽象处理就是:

  1. 处理器里面有动作组
  2. 每个动作里面有抽取器组
  3. 每个抽取器里面有保存组件以及原子抽取器

5、项目相关信息

一只可以抓取动态信息的爬虫高定制爬虫

一只神奇的爬虫


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
ZhihuAnalyse: 知乎用户爬虫数据分析发布时间:2022-02-14
下一篇:
cocook-spider: 分布式数据抓取平台发布时间:2022-02-14
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap