WebMagic
2021-09-14 17:30:54 6 举报
AI智能生成
登录查看完整内容
WebMagic使用
作者其他创作
大纲/内容
Downloader负责从互联网上下载页面,以便后续处理。WebMagic默认使用了Apache HttpClient作为下载工具。
1.Downloader
PageProcessor负责解析页面,抽取有用信息,以及发现新的链接。WebMagic使用Jsoup作为HTML解析工具,并基于其开发了解析XPath的工具Xsoup。在这四个组件中,PageProcessor对于每个站点每个页面都不一样,是需要使用者定制的部分。
2.PageProcessor
Scheduler负责管理待抓取的URL,以及一些去重的工作。WebMagic默认提供了JDK的内存队列来管理URL,并用集合来进行去重。也支持使用Redis进行分布式管理。
3.Scheduler
Pipeline负责抽取结果的处理,包括计算、持久化到文件、数据库等。WebMagic默认提供了“输出到控制台”和“保存到文件”两种结果处理方案。Pipeline定义了结果保存的方式,如果你要保存到指定数据库,则需要编写对应的Pipeline。对于一类需求一般只需编写一个Pipeline。
4.Pipeline
WebMagic的四个组件
架构图
Site对象,可以使用Site.me()创建。在此对象中可以对爬虫进行一些配置配置,包括编码、抓取间隔、超时时间、重试次数等
//可以对爬虫进行一些配置 private Site site = Site.me() .setCharset(\"UTF-8\
Site对象
当我们需要从page对象中获得下载结果时,可以使用page对象的getHtml()方法。
此方法的返回结果就是一个Html对象,也可以看做把这个html页面解析之后映射成一个Html对象,Html对象实现了Selectable接口,是可以直接使用Selectable接口中提供的选择器。
获取Downloader对象下载结果
使用addTargetRequest或者addTargetRequests方法可以将解析出来的链接添加到url访问队列,系统会把url封装成Request对象供Scheduler对象使用。
向Scheduler对象中添加Request对象也就是待访问的url
使用putField方法可以将解析的结果添加到ResultItems对象中,将来在Pipeline对象中可以取到这个数据。
向Pipeline对象中设置输出结果
Page对象是PageProcess组件中的核心对象,此对象中包含三个核心操作:
page对象
XPath:XPath 是一门在 XML 文档中查找信息的语言。XPath 用于在 XML 文档中通过元素和属性进行导航。
CSS选择器:在 CSS 中,选择器是选取需设置样式的元素的模式。
正则表达式
抽取元素:Selectable相关的抽取元素链式API是WebMagic的一个核心功能。使用Selectable接口,可以直接完成页面元素的链式抽取,也无需去关心抽取的细节。
Selectable对象
PageProcessor组件
现有的Pipeline
实例
在WebMagic中,Pileline是抽取结束后,进行数据处理的部分,它主要用于抽取结果的保存,也可以定制Pileline可以实现一些通用的功能。在这里我们可以指定输出的位置,可以是控制台也可以是文件,当然也可以用户自定义Pipeline实现数据导入到数据库中。
使用Pipeline保存结果
Spider是爬虫启动的入口。在启动爬虫之前,我们需要使用一个PageProcessor创建一个Spider对象,然后使用run()进行启动。
同时Spider的其他组件(Downloader、Scheduler、Pipeline)都可以通过set方法来进行设置。
Spider
WebMagic
0 条评论
回复 删除
下一页