htmlunit 抓取网页(个人感觉java原生支持的方式友好,你知道吗?)

优采云 发布时间: 2021-12-22 00:17

  htmlunit 抓取网页(个人感觉java原生支持的方式友好,你知道吗?)

  以上四种方法都是下载http资源。htmlunit 功能稍微强大一些。它还可以加载js和css。不过对于爬虫来说,加载css是没有意义的,但是有时候加载js还是很有必要的。

  无论哪种方式都可以,这取决于您如何选择。个人感觉java原生的支持方式不够友好,但是不需要加载很多依赖。其他方法都非常好用,调用过程也很简单。下载组件通常以util的形式出现,写入后很少修改,除非http请求有bug,所以一旦写入完成,基本什么都没有。使用任何一种方法都可以。

  解析组件

  我们经常写爬虫不是为了像谷歌、百度这样的搜索引擎,而是为了获取特定的信息,这需要页面分析。比如我们爬取csdn的博客,那么我们需要的就是博客。博客的标题、作者、内容不需要其他内容,所以这时候我们需要解析html页面,获取我们需要的文本内容。

  推荐两个工具,一个是htmlCleaner,一个是JSOUP。

  HTMLCleaner 支持 XPATH。如果想了解更多关于xpath的内容,可以自行百度。XPATH 是一种支持 XML 节点定位的语言。HTML 可以理解为 XML 的一种。通过XPATH,我们可以定位我们的资源。

  JSOUP和HTMLCleaner的作用是一样的,都是解析HTML文本,获取我们需要的问题的内容。

  持久化组件

  这很容易理解。我们爬取的内容一定要保存,否则爬虫就没有意义了。这需要一个持久化组件,目的是存储数据。至于mysq、hbase、redis的存储,就看你的了。达到了。

  重复数据删除组件

  爬虫必须对爬取过程中被爬取的内容进行重复数据删除。否则,可想而知,爬虫经常在做无意义的死循环。重复下载和分析爬取的内容是没有意义的。去重的目的是对爬取的链接做一个记录,实现的方法有很多种。如果只抓到一个网站,并且网站不大,可以用java用一个SET来完成。如果数据量很大,可以使用 REDIS、Memeched 等内存库进行过滤。对于繁重的工作,还有一个bloomfilter,非常适合这种场景。

  工具:

  1. JAVA SET

  2. Redis,MEMCACHED

  3. 过滤器

  工艺梳理

  

  总结

  爬虫系统可以用java基础实现。最重要的是满足自己的需求,当需求增加时可以快速扩展。目前JAVA有很多非常好的开源爬虫系统。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线