我在抓取谷歌新闻链接方面遇到了一些问题。 我跟着另一个问题提供了代码来抓取标题并且它可以工作,但是当我尝试修改它以刮取链接而不是它返回一个空字符串。
以下是相关代码
Document doc;
doc = Jsoup.connect("https://www.google.com/search?num=10&safe=off&tbm=nws&q=anime&oq=anime").userAgent("Mozilla").ignoreHttpErrors(true).timeout(0).get();
Elements newslinks = doc.select("li[class=g]");
for (Element link : newslinks) {
Elements linked = link.select("a[class=l]");
String links = linked.attr("data-href");
System.out.println("TEST" + links);
Elements titles = link.select("h3[class=r]");
String title = titles.text();
...
来自谷歌。
<a class="l _HId" href="...not what i want here" onmousedown="return rwt(this,'','','','1','AFQjCNGlSQSnNn69gs3dFI6wQf9ePiar4g','SZyPQ8IYl_kGgASohj4w5g','0ahUKEwiSpfzgov_JAhVHOxoKHTOpB4gQqQIIICgAMAA','','',event)" data-href="http://www.theverge.com/2015/12/22/10649396/google-login-without-password-mobile-security"><em>Google</em> is <em>testing</em> a way for users to log in without a password</a>
感谢您的帮助。
答案 0 :(得分:1)
经过一些实验,我发现代码需要进行一些更改。这有效:
Document doc = Jsoup.connect("https://www.google.com/search?num=10&safe=off&tbm=nws&q=anime&oq=anime").userAgent("Mozilla").get();
Elements links = doc.select("li.g h3 a");
for (Element e: links) {
System.out.println("Title: " + e.text());
System.out.println("Link: " + e.attr("href"));
}
对于这种情况,浏览器中的开发人员工具非常便于查找页面的结构以及如何提取数据,还有documentation for CSS selectors in Jsoup。