Java网络爬虫初探
来自掘金平头哥的技术博文
以采集虎扑列表新闻的新闻标题和详情页为例,使用 Jsoup 和 HttpClient 两种方式获取到页面,然后利用选择器解析得到数据
- Jsoup
- Httpclient + 正则表达式
- 解决网络采集的登陆问题(详情)
以获取豆瓣个人信息为例,从手动设置 cookies 和模拟登陆这两种方式
- 手动设置cookie(但会失效)
- 模拟登陆方式:Jsoup和httpclient(登陆验证问题自己扩展)
- 网页采集遇到数据 Ajax 异步加载(详情)
以网易新闻为例,从利用 htmlunit 工具获取渲染完页面和反向思维直接获取到 Ajax 请求连接获取数据两种方式
- 内置一个浏览器内核,以内置浏览器 Selenium 方式为例(效率不高而且不稳定)
- 反向解析法
- 疑问:如何确定是爬虫时遇到数据异步加载?
- 网页采集 IP 被封(详情)
以豆瓣电影为例,主要以设置代理IP为中心,讨论IP被限制访问的解决办法,还会简单的聊一下如何搭建自己的ip代理服务
- IP代理池项目:proxy_pool
- Java多线程爬虫以及分布式爬虫架构方案(详情)
单线程缺点:
- 效率低,程序之间串行
- 对服务器的CPU利用率不高
要做好多线程爬虫就必须做好两点:第一点就是统一的待采集 URL 维护,第二点就是 URL 的去重
- 维护待采集的 URL
- URL 的去重
- 作者没有更新……