在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:nlp-spider-dynamic开源软件地址:https://gitee.com/gitclebeg/nlp-spider-dynamic开源软件介绍:nlp-spider-dynamic专门为自然语言处理系统组件爬取数据的组件,动态信息爬取的网络爬虫这个爬虫的特点是主要针对动态网页信息爬取的垂直爬虫。设计思路与八爪鱼采集器类似。 注意此爬虫纯属个人开发兴趣而开发,有任何问题欢迎各位提交bug。邮箱地址:[email protected]目前正在完善,有些功能可能有bug,敬请期待... 1、说明动态网站的抓取和静态网站抓取最大的不同就是要解析JS。
2、新手教程
jd_1product.xml 演示如何抓取一个简单商品页上的信息(商品名,动态评论数)jd_products_comments.xml 演示如何抓取一个商品的评论(内容循环提取)jd_shop_allproducts.cml 将演示如何循环抓取一个店铺的所有商品(翻页循环抓取) 其它任务类似,数据保存的名字,以及方式都是在配置文件中定义的。配置好一只爬虫之后,启动程序爬虫就会自动生成需要保存的数据文件。
3、架构设计采用Selenium,一个最大的限制是多线程的并发控制。最好的方式是采用WebDriver单例模式。采用Spring框架可以容易实现。 垂直网络爬虫不仅仅只是下载页面,下载页面只是它的一个组件。
还需要针对性的页面进行处理,比如:在页面上点击一个按钮(本质是执行一段JS);在页面上跳转直接(比如:加载一个新的页面)碰到特殊情况处理(比如:弹出验证码输入框,提取不到页面内容等等)页面内容提取(包括链接,以及主题指标数据)
如何保存批量提取的链接?垂直爬虫得到的链接比较少量。
如何增量爬取数据?如何解决爬虫被封的问题? 这些过程抽象出来,非常符合编程语言里面的三大程序流程结构: 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、如何结合设计一只爬虫爬虫设计抽象出来就是程序设计语言都有的三个处理结构。
判断(需要判断条件,符合就执行,不符合就执行另外的)循环(需要开始条件,循环间隔,循环结束条件)顺序(就是一系列执行下去)
判断(需要判断条件,符合就执行,不符合就执行另外的)循环(需要开始条件,循环间隔,循环结束条件)顺序(就是一系列执行下去)
每一个状态转移动作之后都会产生一个新的页面,而且跳转之前都需要判断比如:(事务支持,要么原子动作全部执行,要么全部失败)点击下一页(是否存在点击下一页这个按钮,没有怎么办?)点击某个按钮加载一段新页面(是否存在需要这个按钮,没有怎么办?)跳转到一个新的页面(新页面链接是否是有效链接?) (上面的每一个动作里面包含原子动作,执行某个点击按钮的动作)
上面每一个处理过程都是嵌套的,也就是说可能循环里面有判断,判断里面有循环等等####而且相对于爬虫来说:####上面的每一个处理过程,都必须打开一个页面作为基准。 业务逻辑处理器里面包含转移动作组合转移动作组里面包含系列内容抽取器内容抽取器里面可能包含业务逻辑组 4.1 举例说明:1) 单独爬取一个网站,需要的组件顺序执行处理器1( 跳转到一个新页面的转移动作( 顺序抽取器(多个单元抽取器,去重保存组件) ))2) 登录页面抓取顺序执行处理器2( 登录动作组(无抽取动作) 顺序执行处理器1)3) 循环页面抓取循环执行处理器2( 循环初始化条件 循环执行动作(抽取器) 循环结束条件)4) 页面点击抓取顺序执行处理器3( 跳转到一个新页面的转移动作( 顺序抽取器(多个单元抽取器,去重保存组件) ) 点击页面按钮动作组( 顺序抽取器(多个单元抽取器,去重保存组件)? )) 这上面四种情况组合起来还能组合成更加复杂的情况。抽象处理就是:
5、项目相关信息一只可以抓取动态信息的爬虫高定制爬虫一只神奇的爬虫 |
请发表评论