Jsoup Google 新闻 Link 抓取无法获取正确的元素
Jsoup Google News Link Scraping unable to get correct element
我在抓取 google 新闻的链接时遇到了一些问题。
我遵循了另一个问题,该问题提供了用于抓取标题的代码并且它有效,但是当我尝试修改它以抓取链接而不是 returns 一个空字符串时。
这里是相关代码,
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();
...
从 google 得到这个。
<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>
感谢您的帮助。
经过一些实验,我发现代码需要一些修改。这有效:
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.
我在抓取 google 新闻的链接时遇到了一些问题。 我遵循了另一个问题,该问题提供了用于抓取标题的代码并且它有效,但是当我尝试修改它以抓取链接而不是 returns 一个空字符串时。
这里是相关代码,
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();
...
从 google 得到这个。
<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>
感谢您的帮助。
经过一些实验,我发现代码需要一些修改。这有效:
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.