java爬虫技术整理
一、简介
本人之前的工作主要用到的是java爬虫,在此整理一下,以及介绍一些相关的辅助工具。
二、需要的工具
Charles,在本地设置代理后,就可以获取到本地发起与收到的http、https报文,可以进行请求头、请求体的分析;
浏览器的开发者工具,可以分析目标页面的各种标签,定位需要获取的元素及内容,也可以获取到当前浏览器内发起与收到的http、https请求。(有些页面禁用开发者工具,这时就需要使用charles)
三、Java爬虫编写步骤
1. 分析目标页面,使用开发者工具,定位到需要爬取的页面的url,以及内容所在的标签;使用js语句测试能否获取到标签中的内容,document.getElementById()之类的,或者使用jquery的获取方法;
2. 使用开发者工具或charles抓取目标页面的http、https请求,分析url、请求头,一些需要验证身份的网站中的请求头一般会包含jsessionid之类的特殊参数,需要仔细分析是哪一个http响应将jsessionid保存到了自己的cookie里(下次发起的请求会包含cookie中的内容,达到服务器身份验证的效果),然后想办法获取到并设置到java爬虫代码中。
3. 编写java爬虫代码,使用HttpClient对象或者URLConnection对象等,创建该对象后,设置目标网站的url,设置请求参数(get或post),设置请求头(可以抄之前分析出的请求头,jsessionid等服务器身份验证的参数也在此设置),关于https与SSL协议需要单独进行相关设置,之后发送请求,等待返回内容。
4. 如果返回头为200,说明获取成功;从返回对象中拿到正文,即目标数据;如果为JSON,则使用JSONObject将正文转为json对象,进行解析,获取目标字段;如果正文为html标签格式,则需要使用jsoup进行解析,使用与js获取页面标签相似的方式,获取到目标内容。
5. 如果返回的是其它类型(非json也非html),则应该是图片、视频、pdf、word之类的(自己知道那个url是什么的),可以直接用流写到本地;pdf、word都有相应的jar包可以获取到里面的内容。
四、扩展工具
本人之前还用到DJNativeSwing+Java爬虫、Selenium+Java爬虫的形式,DJNativeSwing是一个jar包,可以提供可视化的浏览器窗口,运行java代码时会打开该窗口,可以设置跳转到目标页面、在目标页面执行js、获取爬取结果;Selenium则是直接打开本地的浏览器,用java代码控制页面跳转、获取cookie、发送请求爬取页面信息;这两个工具有相同点有不同点,分别适合不同的场景。
五、相关学习网站(个人的讲解网址是现找的网址,仅供参考)
1. Java爬虫:https://blog.csdn.net/qwe86314/article/details/91450098
2. js:https://www.runoob.com/js/js-tutorial.html
3. Jquery:https://www.runoob.com/jquery/jquery-tutorial.html
4. Jsoup:https://www.jianshu.com/p/fd5caaaa950d
5. JSONObject:https://blog.csdn.net/changjh1/article/details/69226743
六、总结
目前Python爬虫可能用的比较多,不过本人之前用的是java爬虫,对Python爬虫不太了解;
本人之前的工作涉及到的java爬虫大概就用到了上述知识;
如果还有其它爬虫相关问题可联系本人,也可查看本人的CSDN博客,上面也有一些爬虫相关知识,谢谢!