htmlunit抓取动态网页( 开源java页面分析工具模拟浏览器执行js代码并获取执行)
优采云 发布时间: 2021-09-22 12:10htmlunit抓取动态网页(
开源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);
}
}
}
如果您有任何意见,请感谢您的支持。