Jsoup无法解析图像。

3
我正在使用jsoup从以下网页检索图片: { http://www.jcpenney.com/dotcom/jewelry-watches/fine-jewelry/mens-jewelry/bulova%25c2%25ae-mens-stainless-steel-watch/prod.jump?ppId=180d97e&catId=cat100240089&selectedLotId=0514592&selectedSKUId=05145920000&navState=navState-:catId-cat100240089:subcatId-:subcatZone-false:N-100240089%20158:Ns-:Nao-0:ps-24:pn-1:Ntt-:Nf-:action-guided%20navigation&catId=SearchResults } 我的代码是:

String url = "http://www.jcpenney.com/dotcom/jewelry-watches/fine-jewelry/mens-jewelry/bulova%25c2%25ae-mens-stainless-steel-watch/prod.jump?ppId=180d97e&catId=cat100240089&selectedLotId=0514592&selectedSKUId=05145920000&navState=navState-:catId-cat100240089:subcatId-:subcatZone-false:N-100240089%20158:Ns-:Nao-0:ps-24:pn-1:Ntt-:Nf-:action-guided%20navigation&catId=SearchResults";


           Document doc= Jsoup.connect(url).userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.120 Safari/535.2").get();


          String imgUrl=doc.select("#mapImageSjElement4 img").attr("abs:src"); 

我希望它能返回给我图片的网址,但是我没有得到图片的网址。有什么建议吗???? 我想获取网页左侧的主要产品图像。

1个回答

1

如果您打印整个文档,您会发现网站中的图像和更多内容是由分散在页面上的javascript脚本加载的。为了获取该图像,您需要在以下两者之间选择:

  1. 使用无GUI的Web浏览器,如Selenium、Webdriver、HTTPClient;在页面完全加载后,获取其HTML内容
  2. 通过研究JavaScript代码来模拟JavaScript,并检索所需数据

这将是一种使用我提到的第二种方法而不向项目添加任何额外库的方式:

//Let's say you have the right script in a String
//variable named javascript.
String[] html = javascript.split("\n");

String imgUrl = "";
for(String line : html) {
    if (line.contains("imgUrl variable name here")) {
        imgUrl = line;
        break;
    }
}

//Now that you have what you want in a variable
//just split / substring it, untill you narrowed
//it down to what you want.

我正在打印我检索到的HTML,实际上图像位于一个div标签内,而该div在jsoup返回给我的HTML中没有被获取。有什么想法可以检索缺失的内容吗?我已经尝试了不同的方法,如添加cookies,还使用了useragents,但都无济于事。 - Jabir Hussain Turi
当我查看它时,它是由JavaScript加载的。使用Jsoup,您必须进入所有脚本并查看它如何加载。如果有任何机会是Jquery直接从数据库获取数据,那么Jsoup就无法做到。 - Igor Brusamolin Lobo Santos
我认为图像的src存储在JavaScript变量中,我可以获取到脚本标签,但是我能否使用jsoup获取存储在该脚本内部变量中的值?如果可以,那么如何实现? - Jabir Hussain Turi
Jsoup无法帮助从JavaScript中获取内容,您需要使用字符串函数。我将编辑我的答案,以便可以模拟一种方法来实现它。 - Igor Brusamolin Lobo Santos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接