动态网页抓取(网页获取和解析速度和性能的应用场景详解!)

优采云 发布时间: 2021-09-14 22:08

  动态网页抓取(网页获取和解析速度和性能的应用场景详解!)

  (4)support 代理服务器

  (5)支持自动cookies管理等

  Java爬虫开发中应用最广泛的网页获取技术。它具有一流的速度和性能。它在功能支持方面相对较低。不支持JS脚本执行、CSS解析、渲染等准浏览器功能。推荐用于需要快速速度的应用程序。无需解析脚本和CSS即可获取网页的场景。

  示例代码如下:

  package cn.ysh.studio.crawler.httpclient;import org.apache.http.client.HttpClient;import org.apache.http.client.ResponseHandler;import org.apache.http.client.methods.HttpGet;import org.apache.http.impl.client.BasicResponseHandler;import org.apache.http.impl.client.DefaultHttpClient;/**

* 基于HtmlClient抓取网页内容

*

* @author www.yshjava.cn

*/publicclassHttpClientTest{publicstaticvoid main(String[] args)throwsException{//目标页面String url ="http://www.yshjava.cn";//创建一个默认的HttpClientHttpClient httpclient =newDefaultHttpClient();try{//以get方式请求网页http://www.yshjava.cnHttpGet httpget =newHttpGet(url);//打印请求地址System.out.PRintln("executing request "+ httpget.getURI());//创建响应处理器处理服务器响应内容ResponseHandlerresponseHandler=newBasicResponseHandler();//执行请求并获取结果String responseBody = httpclient.execute(httpget, responseHandler);System.out.println("----------------------------------------");System.out.println(responseBody);System.out.println("----------------------------------------");}finally{//关闭连接管理器

httpclient.getConnectionManager().shutdown();}}}

  Jsoup

  jsoup 是一个 Java HTML 解析器,可以直接解析一个 URL 地址和 HTML 文本内容。它提供了一个非常省力的API,可以通过DOM、CSS和类似jQuery的操作方法来检索和操作数据。

  网页抓取解析速度非常快,推荐使用。

  主要功能如下:

  1. 从 URL、文件或字符串解析 HTML;

  2. 使用 DOM 或 CSS 选择器来查找和检索数据;

  3. 可以操作 HTML 元素、属性和文本;

  示例代码如下:

  package cn.ysh.studio.crawler.jsoup;import java.io.IOException;import org.jsoup.Jsoup;/**

* 基于Jsoup抓取网页内容

* @author www.yshjava.cn

*/publicclassJsoupTest{publicstaticvoid main(String[] args)throwsIOException{//目标页面String url ="http://www.yshjava.cn";//使用Jsoup连接目标页面,并执行请求,获取服务器响应内容String html =Jsoup.connect(url).execute().body();//打印页面内容System.out.println(html);}}

  HTMLUnit

  htmlunit 是一个开源的 java 页面分析工具。阅读完页面后,您可以有效地使用 htmlunit 来分析页面上的内容。该项目可以模拟浏览器操作,被称为java浏览器的开源实现。这个没有界面的浏览器也非常快。使用 Rhinojs 引擎。模拟js操作。

  网页获取和解析速度更快,性能更好。推荐用于需要解析网页脚本的应用场景。

  示例代码如下:

  package cn.ysh.studio.crawler.htmlunit;import com.gargoylesoftware.htmlunit.BrowserVersion;import com.gargoylesoftware.htmlunit.Page;import com.gargoylesoftware.htmlunit.WebClient;/**

* 基于HtmlUnit抓取网页内容

*

* @author www.yshjava.cn

*/publicclassHtmlUnitSpider{publicstaticvoid main(String[] s)throwsException{//目标网页String url ="http://www.yshjava.cn";//模拟特定浏览器Firefox_3WebClient spider =newWebClient(BrowserVersion.FIREFOX_3);//获取目标网页Page page = spider.getPage(url);//打印网页内容System.out.println(page.getWebResponse().getContentAsString());//关闭所有窗口

spider.closeAllWindows();}}

  瓦提

  Watij(读作 wattage)是一种用 Java 开发的 Web 应用程序测试工具。鉴于 Watij 的简单性和 Java 语言的强大功能,Watij 可以让您在真实浏览器中完成 Web 应用程序的自动化测试。因为调用了本地浏览器,所以支持CSS渲染和JS执行。

  网页抓取速度一般,IE版本过低(6/7)可能导致内存泄漏。

  示例代码如下:

  package cn.ysh.studio.crawler.ie;import watij.runtime.ie.IE;/**

* 基于Watij抓取网页内容,仅限Windows平台

*

* @author www.yshjava.cn

*/publicclassWatijTest{publicstaticvoid main(String[] s){//目标页面String url ="http://www.yshjava.cn";//实例化IE浏览器对象

IE ie =new IE();try{//启动浏览器

ie.start();//转到目标网页

ie.goTo(url);//等待网页加载就绪

ie.waitUntilReady();//打印页面内容System.out.println(ie.html());}catch(Exception e){

e.printStackTrace();}finally{try{//关闭IE浏览器

ie.close();}catch(Exception e){}}}}

  硒

  Selenium 也是 Web 应用程序测试的工具。 Selenium 测试直接在浏览器中运行,就像真正的用户在操作一样。支持的浏览器包括 IE、Mozilla Firefox、Mozilla Suite 等。该工具的主要功能包括: 测试浏览器兼容性——测试您的应用程序,看看它是否能在不同的浏览器和操作系统上运行良好。测试系统功能——创建回归测试以验证软件功能和用户需求。支持自动录制动作和自动生成。测试Net、Java、Perl等不同语言的脚本。Selenium是ThoughtWorks专门为Web应用编写的验收测试工具。

  网页抓取速度慢,不是爬虫的好选择。

  示例代码如下:

  package cn.ysh.studio.crawler.selenium;import org.openqa.selenium.htmlunit.HtmlUnitDriver;/**

* 基于HtmlDriver抓取网页内容

*

* @author www.yshjava.cn

*/publicclassHtmlDriverTest{publicstaticvoid main(String[] s){//目标网页String url ="http://www.yshjava.cn";HtmlUnitDriver driver =newHtmlUnitDriver();try{//禁用JS脚本功能

driver.setJavascriptEnabled(false);//打开目标网页

driver.get(url);//获取当前网页源码String html = driver.getPageSource();//打印网页源码System.out.println(html);}catch(Exception e){//打印堆栈信息

e.printStackTrace();}finally{try{//关闭并退出

driver.close();

driver.quit();}catch(Exception e){}}}}

  网络规范

  具有支持脚本执行和 CSS 渲染的界面的开源 Java 浏览器。速度一般。

  示例代码如下:

  package cn.ysh.studio.crawler.webspec;import org.watij.webspec.dsl.WebSpec;/**

* 基于WebSpec抓取网页内容

*

* @author www.yshjava.cn

*/publicclassWebspecTest{publicstaticvoid main(String[] s){//目标网页String url ="http://www.yshjava.cn";//实例化浏览器对象WebSpec spec =newWebSpec().mozilla();//隐藏浏览器窗体

spec.hide();//打开目标页面

spec.open(url);//打印网页源码System.out.println(spec.source());//关闭所有窗口

spec.closeAll();}}

  源码下载:网络爬虫(网络蜘蛛)网络爬虫示例源码

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线