java爬虫抓取动态网页(动态信息爬取的网络爬虫设计思路与优采云采集器类似)

优采云 发布时间: 2021-10-22 13:09

  java爬虫抓取动态网页(动态信息爬取的网络爬虫设计思路与优采云采集器类似)

  nlp-spider-dynamic 是一个爬取数据的组件,专门针对自然语言处理系统组件,动态信息爬取的网络爬虫

  该爬虫的特点是垂直爬虫,主要针对动态网页信息的爬取。设计思路类似于优采云采集器

  请注意,此爬虫纯粹是为了个人发展兴趣而开发的。如果您有任何问题,欢迎您提交错误。电子邮件地址:

  目前正在完善中,部分功能可能存在BUG,敬请期待...

  1、说明

  动态网站爬取和静态网站爬取最大的区别就是解析JS。

  2、新手教程

  不同平台的驱动目录(存放selenium需要运行的驱动)请参考本教程,自编译目前只提供windows GhostDriver已经集成在Phantomjs.exe

  简单爬取示例 tasks\test_ghost 下的配置文件说明了如何配置爬虫来爬取各种网页。以下是每个文件的说明:

  jd_1product.xml 演示如何抓取一个简单商品页上的信息(商品名,动态评论数)

jd_products_comments.xml 演示如何抓取一个商品的评论(内容循环提取)

jd_shop_allproducts.cml 将演示如何循环抓取一个店铺的所有商品(翻页循环抓取)

  与其他任务类似,数据存储的名称和方法在配置文件中定义。配置好爬虫后,启动程序爬虫会自动生成需要保存的数据文件。

  爬虫执行org.wisdomdata.main.MainCrawler,将配置文件的地址添加到tasksFiles中,启动程序。目前只能支持一个爬虫,未来可能会支持分布式爬虫。3、建筑设计

  对于 Selenium,最大的限制之一是多线程并发控制。最好的方法是使用 WebDriver 单例模式。它可以使用 Spring 框架轻松实现。

  垂直网络爬虫不仅仅是下载页面,下载页面只是其组件之一。

  还需要针对性的页面进行处理,比如:

在页面上点击一个按钮(本质是执行一段JS);

在页面上跳转直接(比如:加载一个新的页面)

碰到特殊情况处理(比如:弹出验证码输入框,提取不到页面内容等等)

页面内容提取(包括链接,以及主题指标数据)

  如何保存批量提取的链接?

垂直爬虫得到的链接比较少量。

  如何增量爬取数据?

如何解决爬虫被封的问题?

  这些过程是抽象的,与编程语言中的三大程序流程结构非常一致:

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

  通过将这三者结合起来,可以完成任何复杂的程序流程。

  一个网站的垂直爬行也可以结合以上三个过程来描述:例如爬取一个网站时:

  do for 循环列表页(循环方式 点击下一页,结束条件(指定最大次数等))

do for 每一个内容页面(循环方式 依次抓取,结束条件)

提取信息(异步提取,同步提取)

done

点击下一页

done

  比如更复杂的网站:

  do

填写表单,点击提交,指定页面跳转

done

do then

do 循环列表页(循环方式 点击下一页,结束条件(指定最大次数等))

提取信息

done

do then

点击某个按钮

do

do for 循环内容

提取信息(

if (未提取到信息,或者提取到信息有什么问题)

dosome

endif

done

done

点击按钮

done

done

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

  4、如何组合和设计一个爬虫。爬虫设计是从编程语言具有的三种处理结构中抽象出来的。

  判断(需要判断条件,符合就执行,不符合就执行另外的)

循环(需要开始条件,循环间隔,循环结束条件)

顺序(就是一系列执行下去)

  判断(需要判断条件,符合就执行,不符合就执行另外的)

循环(需要开始条件,循环间隔,循环结束条件)

顺序(就是一系列执行下去)

  每次状态转换动作后,都会生成一个新的页面,跳转前需要判断,如:(事务支持,要么全部执行原子动作,要么全部失败)

  点击下一页(是否存在点击下一页这个按钮,没有怎么办?)

点击某个按钮加载一段新页面(是否存在需要这个按钮,没有怎么办?)

跳转到一个新的页面(新页面链接是否是有效链接?)

  (上面的每个动作都收录一个原子动作,它执行某个按钮点击动作)

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

  业务逻辑处理器里面包含转移动作组合

转移动作组里面包含系列内容抽取器

内容抽取器里面可能包含业务逻辑组

  4.1 示例:

  1) 单独爬取一个网站,需要的组件

顺序执行处理器1(

跳转到一个新页面的转移动作(

顺序抽取器(多个单元抽取器,去重保存组件)

2) 登录页面抓取

顺序执行处理器2(

登录动作组(无抽取动作)

顺序执行处理器1

3) 循环页面抓取

循环执行处理器2(

循环初始化条件

循环执行动作(抽取器)

循环结束条件

4) 页面点击抓取

顺序执行处理器3(

跳转到一个新页面的转移动作(

顺序抽取器(多个单元抽取器,去重保存组件)

点击页面按钮动作组(

顺序抽取器(多个单元抽取器,去重保存组件)?

  以上四种情况可以组合成更复杂的情况。抽象处理为:

  处理器中有动作组。每个操作都有一个提取器组。每个提取器都有一个保存组件和一个原子提取器。5、 项目相关信息。一个可以抓取动态信息的爬虫。爬虫

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线