为什么img标签用jsoup解析后没有src值?
Why img tag has no src value after parsing with jsoup?
我想从 html img 标签获取 src 值。
通过 chrome 和检查元素内部我可以看到 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 内容,我该怎么办?
欢迎来到 SO!
您面临的问题无法通过 Jsoup 解决,因为 Jsoup 是 HTML 解析器而不是浏览器。由于它不是浏览器,因此 javascript 呈现的任何内容都不会用 Jsoup 呈现。
您需要的是另一个模拟网络浏览器的工具,例如Selenium
有多种方法可以做到这一点。
- 使用 Selenium 处理页面检索和 抓取。
- 使用 Selenium 获取动态页面并使用 JSoup 解析和抓取 内容。
我个人推荐第二种方法,因为我更习惯使用 Jsoup 抓取。
我想从 html img 标签获取 src 值。 通过 chrome 和检查元素内部我可以看到 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 内容,我该怎么办?
欢迎来到 SO!
您面临的问题无法通过 Jsoup 解决,因为 Jsoup 是 HTML 解析器而不是浏览器。由于它不是浏览器,因此 javascript 呈现的任何内容都不会用 Jsoup 呈现。
您需要的是另一个模拟网络浏览器的工具,例如Selenium
有多种方法可以做到这一点。
- 使用 Selenium 处理页面检索和 抓取。
- 使用 Selenium 获取动态页面并使用 JSoup 解析和抓取 内容。
我个人推荐第二种方法,因为我更习惯使用 Jsoup 抓取。