通过 Xpath 语句 //div[contains(@class,"article-img")]很快就获取到了所需要的 Elements 对象,但奇怪的是 Elements 对象中有所需要的内容,打印也能正常展示,但是一旦遍历 Elements 尝试去获取标签属性就打印不出任何结果,调用获取所有属性方法并打印就只能打印出后两个我不需要的属性,但是前面打印的时候我需要的属性又还在
代码如下
@Override
public R crawler() {
try(WebClient webClient = WebClientUtils.getWebClient()){
System.out.println("开始爬取.....");
// WebRequest webRequest = new WebRequest(new URL("https://www.cnhnb.com/xt/search/?%E6%9F%91%E6%A9%98%E5%87%A4%E8%9D%B6"), HttpMethod.GET);
// HtmlPage page = webClient.getPage(webRequest);
// Document document = Jsoup.parse(page.asXml());
String url = "https://www.cnhnb.com/xt/search/?%E6%9F%91%E6%A9%98%E5%87%A4%E8%9D%B6";
Document document = Jsoup.connect(url).get();
Elements elements = document.selectXpath("//div[contains(@class,\"article-img\")]");
System.out.println(elements.size()); //大小显示为 10
System.out.println(elements.html()); //elements 有结果,能正确打印出内容
for (Element element : elements) {
System.out.println(element.html());//能正确打印出内容,注释为打印结构
/*
*/
System.out.println(element.attr("alt")); //无内容
System.out.println(element.attr("src")); //无内容
Attributes attributes = element.attributes();
for (Attribute attribute : attributes) {
System.out.println(attribute.html()); //打印出后两个属性,注释为打印结果
/*
class="article-img"
data-v-1dc19fe0
*/
}
}
}catch (Exception e){
e.printStackTrace();
}
return null;
}
我测试爬虫功能的方式开启项目之后打开本地 Swagger 并调用方法
这个问题我搞了两天都没有解决,去网上查也没看到谁有类似问题,和学长交流两三天了我啥方法都试过了也不行,实在没办法了我才来求教各位,来个大佬救救