【发布时间】:2016-08-14 16:23:02
【问题描述】:
例如在 google 上,我想让我的程序询问我想在 google 上搜索什么我输入我想搜索的内容,然后我的程序在 google 上搜索它。 我必须使用 Jsoup 吗?我可以用别的吗?
【问题讨论】:
-
具有讽刺意味的是,您可以使用 Google 找到问题的答案...
例如在 google 上,我想让我的程序询问我想在 google 上搜索什么我输入我想搜索的内容,然后我的程序在 google 上搜索它。 我必须使用 Jsoup 吗?我可以用别的吗?
【问题讨论】:
您应该使用谷歌custom search API 免费版仅限前 100 个结果。
也可以使用jsoup,但是网站上的layout/css更改破坏选择器的可能性大于cs API的更改,因此使用该API更稳定。此外,来自一个 ip 的异常数量的搜索可能会导致该 ip 被阻止(只是一种推测),但如果您的应用程序只是通过用户的手动搜索,这应该不是问题。
jsoup 方法:
String searchTerm = "jsoup examples";
int numberOfResultpages = 5;
String searchUrl = "https://www.google.com/search?q="+searchTerm.replace(" ", "+")+"&start=";
Document doc;
for (int i = 0; i < numberOfResultpages; i++) {
doc = Jsoup.connect(searchUrl+i).userAgent("Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36")
.referrer("https://www.google.com/").get(); // note: not working without userAgent
for (Element result : doc.select("h3.r a"))
{
String title = result.text();
String url = result.attr("href");
// just printing out title and link to demonstate the approach
System.out.println(title + " -> " + url);
}
}
输出:
Example program: list links: jsoup Java HTML parser -> https://jsoup.org/cookbook/extracting-data/example-list-links
Extract attributes, text, and HTML from elements: jsoup Java HTML ... -> https://jsoup.org/cookbook/extracting-data/attributes-text-html
Use selector-syntax to find elements: jsoup Java HTML parser -> https://jsoup.org/cookbook/extracting-data/selector-syntax
...
【讨论】: