java抓取网页内容(WebMagic使用Jsoup来管理URL(newRedisScheduler)组件功能说明)

优采云 发布时间: 2022-01-15 10:15

  java抓取网页内容(WebMagic使用Jsoup来管理URL(newRedisScheduler)组件功能说明)

  //设置Scheduler,使用Redis管理URL队列

  .setScheduler(new RedisScheduler("localhost"))

  //设置Pipeline并将结果以json模式保存到文件

  .addPipeline(new JsonFilePipeline("D:\\data\\webmagic"))

  //开启5个线程同时执行

  .thread(5)

  //启动爬虫

  .run();

  }

  组件功能说明:

  1.下载器

  Downloader 负责从 Internet 下载页面以供后续处理。 WebMagic 默认使用 Apache HttpClient 作为下载工具。

  2.页面处理器

  PageProcessor 负责解析页面、提取有用信息和发现新链接。 WebMagic 使用 Jsoup 作为 HTML 解析工具,并在其基础上开发了 Xsoup 解析 XPath 的工具。

  这四个组件中,PageProcessor对于每个站点的每个页面都是不同的,是需要用户自定义的部分。

  3.调度器

  Scheduler 负责管理要抓取的 URL,以及一些去重工作。 WebMagic 默认提供 JDK 的内存队列来管理 URL,并使用集合进行去重。还支持使用 Redis 进行分布式管理。

  除非项目有一些特殊的分布式需求,否则不需要自己定制Scheduler。

  4.管道

  Pipeline负责提取结果的处理,包括计算、持久化到文件、数据库等。WebMagic默认提供两种结果处理方案:“输出到控制台”和“保存到文件”。 Pipeline 定义了保存结果的方式。如果要保存到指定的数据库,需要编写相应的Pipeline。一般来说,对于一类需求,只需要编写一个 Pipeline。

  对象描述:

  Request是对URL地址的一层封装,一个Request对应一个URL地址。它是PageProcessor与Downloader交互的载体,也是PageProcessor控制Downloader的唯一途径。

  除了 URL 本身,它还收录一个 Key-Value 结构的额外字段。你可以额外保存一些特殊的属性,并在其他地方读取它们来完成不同的功能。比如添加上一页的一些信息等。

  Page 表示从 Downloader 下载的页面 - 它可能是 HTML、JSON 或其他文本内容。页面是WebMagic抽取过程的核心对象,它提供了一些抽取、结果保存等方法。

  ResultItems相当于一个Map,它保存了PageProcessor处理的结果,供Pipeline使用。它的API和Map非常相似,值得注意的是它有一个字段skip,如果设置为true,它不应该被Pipeline处理。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线