Java爬虫须要的库:次要是Jsoup和OKHTTP
具体的依赖如下:
<!-- 为了利用httpclient拜访url,爬虫用--> <dependency> <groupId>commons-httpclient</groupId> <artifactId>commons-httpclient</artifactId> <version>3.1</version> </dependency> <!-- https://mvnrepository.com/artifact/org.jsoup/jsoup --> <dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.8.3</version> </dependency> <!-- 文件下载 --> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.5</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient --> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.5</version> </dependency>
其中jsoup次要是实现爬虫页面解析,okhttp用来做数据申请获取页面信息
工具类文件地址(我的码云仓库):
https://gitee.com/stephaniezh...
Jsoup页面解析留神
自身Jsoup提供了很多的条件筛选接口,比方按class筛选,按attr筛选等,然而我发现不晓得是本人应用不精确还是性能不稳固,很多时候按class指定查找元素等很不好用,所以我就会起初一律应用:
Element parents; Elements childs = parents.getAllElements();
大量应用getAllElements()这个函数,而后从找出的childs中持续筛选想要的hml元素,比方判断child.html()是否蕴含某个特色款式串等,找到想要的节点
应用代理服务器进步成功率
我目前次要应用的两个代理服务器:
然而因为服务器上的代理IP是会不停更新或生效的(每天),所以须要动静的从这些代理服务器上获取最新的代理IP端口,在程序执行爬虫操作的时候,一旦发现哪个IP不可用就抛弃他,以便保障咱们程序应用的代理永远是新的更无效的
国内最新收费HTTP代理IP平台 - 蜜蜂代理
浏览器爬虫插件WebScrapper
个别时候,咱们有可能须要长期批量采集一些网页数据,间接开发程序消耗的老本可能比拟高,就能够思考用浏览器爬虫插件,我最近用了一个WebScrapper,Chrome和Edge都有都能够用的
留神要点
(1) 爬虫为了进步拜访成功率,除了根底的获取页面申请,还可能须要润饰一下申请Header,以及cookie一些数据
(2)防止被服务器封禁号,可能须要切不同的IP进行尝试,即解决一下代理IP,做成保护动静的代理IP后重试