为什么 img 标签在使用 jsoup 解析后没有 src 值?

Why img tag has no src value after parsing with jsoup?

提问人:Hosein Haqiqian 提问时间:5/13/2019 最后编辑:Hosein Haqiqian 更新时间:6/7/2021 访问量:155

问:

我想从html img标签中获取src值。 通过 chrome 和 inspect 元素内部我可以看到 src 的值,但是当我使用 jsoup 库解析它时,src 没有值,这是我的代码:

document = Jsoup.connect("http://estelam.rahvar120.ir/index.jsp? 
pageid=2371666&p=1").userAgent(USERAGENT).method(Connection.Method.GET)
.execute().parse();

Element element = document.select("img[id=capimg]").first(); //img 
tag element
String absoluteUrl = element.absUrl("src"); // absoluteUrl = ""
String srcValue = element.attr("src"); // srcValue = ""

该网站无法从其他国家/地区访问,但我想从 html 解析的地方是:

<img id="capimg" alt="Enter Captcha :" 
src="" width="200" height="60">

问题是jsoup在javascript设置src值之前获取html内容,我该怎么办?

Android JSOUP HTML 解析

评论

0赞 Samuel Philipp 5/13/2019
您能否分享一个最小、完整且可验证的示例,包括您尝试解析的 HTML?
0赞 Hosein Haqiqian 5/13/2019
@SamuelPhilipp谢谢,应用了更改。有用吗?
0赞 Samuel Philipp 5/13/2019
使用您共享的 HTML 测试了您的代码,但它似乎适用于 .但是您的图像有一个空的 src 标签。element.attr("src");
0赞 Hosein Haqiqian 5/13/2019
@SamuelPhilipp是的,通过检查元素它的可见性,但在 view-source 中并使用 jsoup 解析后。src 没有价值。
0赞 Samuel Philipp 5/13/2019
如果 src url 是通过 JavaScript 设置的,Jsoup 无法解析它。

答:

1赞 Zendy 5/15/2019 #1

欢迎来到 SO!

您面临的问题无法用 Jsoup 解决,因为 Jsoup 是一个 HTML 解析器,而不是浏览器。由于它不是浏览器,因此 javascript 渲染的任何内容都不会使用 Jsoup 渲染。

您需要的是另一个模拟 Web 浏览器的工具,例如 Selenium

有多种方法可以做到这一点。

  1. 使用 Selenium 处理页面检索和抓取
  2. 使用 Selenium 获取动态页面,并使用 JSoup 解析和抓取内容。

我个人推荐第二种方法,因为我更习惯使用 Jsoup 进行刮擦

评论

0赞 DisappointedByUnaccountableMod 6/7/2021
仅供参考,它是刮(刮擦,刮擦,刮擦)而不是报废。 “报废”的意思是像垃圾一样扔掉:-(