HtmlUnit+Jsoup学习总结

一、网页数据大概分为三类:

1.静态网页

所有内容都写在Html标签中,可以从网页源代码中直接查找到数据。

2.动态网页

数据是通过JavaScript动态加载显示到,直接查找源代码不能找到数据。

3.登陆网页

3.1 无验证码登陆

需要通过登陆后才可以查看获取网页数据。(包括静态、动态)

3.2 有验证码登陆(暂时还未研究)

验证码目前形势也较多:

传统验证图片输入

拖动验证

点击图中某些字

短信验证

计算图片算术结果

....

二、爬虫获取数据步骤:

1. 通过http协议,获取(下载)网页(起始页)

2. 解析网页:

2.1 解析网页链接,加入爬队列(去重处理,标记已爬取链接)

2.2 取得需要的数据

3. 保存数据

三、爬取技术选取:HtmlUnit+Jsoup

采用htmlunit获取网页,并解析执行js,渲染页面

采用jsoup解析网页,获取数据和链接

 

Htmlunit常用参数设置:

参数设置如下:

          // 1创建WebClient

WebClient webClient=new WebClient(BrowserVersion.CHROME);
     // 2 启动JS
          webClient.getOptions().setJavaScriptEnabled(true);
         // 3 禁用Css,可避免自动二次請求CSS进行渲染
          webClient.getOptions().setCssEnabled(false);
         // 4 启动客戶端重定向
          webClient.getOptions().setRedirectEnabled(true);
         // 5 js运行错誤時,是否拋出异常
          webClient.getOptions().setThrowExceptionOnScriptError(false);
         // 6 设置超时
          webClient.getOptions().setTimeout(50000);
       //获取网页

  HtmlPage htmlPage = webClient.getPage(url);
         // 等待JS驱动dom完成获得还原后的网页
           webClient.waitForBackgroundJavaScript(10000);
         // 网页內容
         /* System.out.println(htmlPage.asXml()); */

           Document doc=Jsoup.parse(htmlPage.asXml());

         //使用jsoup解析页面

.....

         //关闭windows,释放资源
               webClient.closeAllWindows();

更多参考:http://htmlunit.sourceforge.net/gettingStarted.html

http://htmlunit.sourceforge.net/apidocs/

http://www.cnblogs.com/luotinghao/p/3800054.html

http://blog.csdn.net/ldw220817/article/details/8790119

四、Jsoup常用函数

Document doc=Jsoup.parse(String html);//html源码文本,解析并生成DOM

doc.select(String cssQuery);

doc.getElementById();

更多参考:http://www.cnblogs.com/xiaoMzjm/p/3899366.html

http://tool.oschina.net/apidocs/apidoc?api=jsoup-1.6.3

https://www.ibm.com/developerworks/cn/java/j-lo-jsouphtml/

五、总结

1.js的执行还未研究透彻

2.验证码还未开始研究

3.准备研究webkit

4.终极目标:封装自己的爬虫

你可能感兴趣的:(爬虫)