vlambda博客
学习文章列表

java爬虫技术整理

一、简介

   本人之前的工作主要用到的是java爬虫,在此整理一下,以及介绍一些相关的辅助工具。

 

二、需要的工具

   Charles,在本地设置代理后,就可以获取到本地发起与收到的httphttps报文,可以进行请求头、请求体的分析;

   浏览器的开发者工具,可以分析目标页面的各种标签,定位需要获取的元素及内容,也可以获取到当前浏览器内发起与收到的httphttps请求。(有些页面禁用开发者工具,这时就需要使用charles

 

三、Java爬虫编写步骤

1. 分析目标页面,使用开发者工具,定位到需要爬取的页面的url,以及内容所在的标签;使用js语句测试能否获取到标签中的内容,document.getElementById()之类的,或者使用jquery的获取方法;

2. 使用开发者工具或charles抓取目标页面的httphttps请求,分析url、请求头,一些需要验证身份的网站中的请求头一般会包含jsessionid之类的特殊参数,需要仔细分析是哪一个http响应将jsessionid保存到了自己的cookie里(下次发起的请求会包含cookie中的内容,达到服务器身份验证的效果),然后想办法获取到并设置到java爬虫代码中。

3. 编写java爬虫代码,使用HttpClient对象或者URLConnection对象等,创建该对象后,设置目标网站的url,设置请求参数(getpost),设置请求头(可以抄之前分析出的请求头,jsessionid等服务器身份验证的参数也在此设置),关于httpsSSL协议需要单独进行相关设置,之后发送请求,等待返回内容。

4. 如果返回头为200,说明获取成功;从返回对象中拿到正文,即目标数据;如果为JSON,则使用JSONObject将正文转为json对象,进行解析,获取目标字段;如果正文为html标签格式,则需要使用jsoup进行解析,使用与js获取页面标签相似的方式,获取到目标内容。

5. 如果返回的是其它类型(非json也非html),则应该是图片、视频、pdfword之类的(自己知道那个url是什么的),可以直接用流写到本地;pdfword都有相应的jar包可以获取到里面的内容。

 

四、扩展工具

   本人之前还用到DJNativeSwing+Java爬虫、Selenium+Java爬虫的形式,DJNativeSwing是一个jar包,可以提供可视化的浏览器窗口,运行java代码时会打开该窗口,可以设置跳转到目标页面、在目标页面执行js、获取爬取结果;Selenium则是直接打开本地的浏览器,用java代码控制页面跳转、获取cookie、发送请求爬取页面信息;这两个工具有相同点有不同点,分别适合不同的场景。

 

五、相关学习网站(个人的讲解网址是现找的网址,仅供参考)

1. Java爬虫:https://blog.csdn.net/qwe86314/article/details/91450098

2. jshttps://www.runoob.com/js/js-tutorial.html

3. Jqueryhttps://www.runoob.com/jquery/jquery-tutorial.html

4. Jsouphttps://www.jianshu.com/p/fd5caaaa950d

5. JSONObjecthttps://blog.csdn.net/changjh1/article/details/69226743

 

六、总结

  目前Python爬虫可能用的比较多,不过本人之前用的是java爬虫,对Python爬虫不太了解;

本人之前的工作涉及到的java爬虫大概就用到了上述知识;

如果还有其它爬虫相关问题可联系本人,也可查看本人的CSDN博客,上面也有一些爬虫相关知识,谢谢!