htmlunit抓取动态网页( 开源java页面分析工具模拟浏览器执行js代码并获取执行)

优采云 发布时间: 2021-09-22 12:10

  htmlunit抓取动态网页(

开源java页面分析工具模拟浏览器执行js代码并获取执行)

  java htmlunit jsoup在web img选项卡中实现图像

  htmlunit是一个开源Java页面分析工具,可以模拟浏览器以执行JS代码并在执行后获取HTML网页代码。

  jsoup是一个java html解析器,允许您使用简单的语法获取HTML标记中的属性的值。

  如果在JS执行后获得IMG标记的SRC属性值,则可以将图像下载到本地。

  所需的maven依赖性:

  

org.jsoup

jsoup

1.11.3

net.sourceforge.htmlunit

htmlunit

2.33

  下载程序中的图像需要三个必须具有参数,即:需要访问网页的URL,需要爬上元素内的IMG图像的CSS选择器,并且将图片保存到本地位置。此外,还有一个可选的参数下载图片的名称。

  此外,HtmlUnit也可以设置等待访问web JS负荷的时间,只需修改在源代码中的参数之一。

  在staticatool工具类中,根据URL下载图像的代码来自网络。

  使用化的HtmlUnit和JSoup框架,得到了很多有趣的事情,比如你获得从网页所需的文本内容,并实现方法是类似的。

  编译环境:

  Windows,JD伪原创1、 IDEM2020

  一些示例代码:

  如果要查看程序的完整代码,我可以。

  主要主要类:

  public class Main {

// 默认保存路径:桌面/img文件夹

private static final String defaultSavePath = "C:\\Users\\ASUS\\Desktop\\img\\";

public static void main(String[] args) throws Exception {

// MainFunction function =

// new MainFunction("https://www.jd.com/", "#J_focus img", "C:\\Users\\ASUS\\Desktop\\img\\") {

// @Override

// int naming(int count) {

// return ++count;

// }

// };

// MainFunction function =

// new MainFunction("http://150.158.165.239/", "img", "C:\\Users\\ASUS\\Desktop\\img\\") {

// @Override

// int naming(int count) {

// return ++count;

// }

// };

MainFunction function =

new MainFunction("https://blog.csdn.net/qq_46239972?spm=1000.2115.3001.5113", "#asideProfile img", defaultSavePath) {

@Override

int naming(int count) {

return count + 1;

}

};

function.run();

}

}

  主功能主函数类

  import org.jsoup.Jsoup;

import org.jsoup.nodes.Document;

import org.jsoup.nodes.Element;

import com.gargoylesoftware.htmlunit.WebClient;

import com.gargoylesoftware.htmlunit.html.HtmlPage;

import org.jsoup.Jsoup;

import org.jsoup.nodes.Document;

/**

* 主要功能类

*/

public class MainFunction {

private final String url;

private final Document document;

private final String cssQuery;

private final String downFilePath;

/**

* 构造函数保存需要访问网站的url

*/

public MainFunction(final String url, final String cssQuery, final String downFilePath) throws Exception{

this.url = url;

this.cssQuery = cssQuery;

this.downFilePath = downFilePath;

//Htmlunit模拟的浏览器,设置css,js等支持及其它的一些简单设置

WebClient browser = new WebClient();

browser.getOptions().setCssEnabled(false);

browser.getOptions().setJavaScriptEnabled(true);

browser.getOptions().setThrowExceptionOnScriptError(false);

//获取页面

HtmlPage htmlPage = browser.getPage(url);

//设置等待js的加载时间

browser.waitForBackgroundJavaScript(2600);

//使用xml的方式解析获取到jsoup的document对象

document = Jsoup.parse(htmlPage.asXml());

System.out.println(document);

// document = Jsoup.connect(url).get();

// System.out.println(document);

}

// 辅助命名

private int count = 1;

/**

* 图片命名规则函数

* 需要被重写

*/

int naming(int count) {

return -1;

}

public void run() throws Exception{

for(Element res : document.select(cssQuery)) {

String imgURL = res.attr("src");

if (imgURL.length() > 1 && imgURL.charAt(0) == '/' && imgURL.charAt(1) == '/')

imgURL = "http:" + imgURL;

Thread.sleep(804);

StaticTool.downImages(downFilePath, (count = naming(count)) + ".png", /*url + */imgURL);

}

}

}

  如果您有任何意见,请感谢您的支持。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线