我想在2016年抓取panda
的Google新闻结果
据该网站称,2016年新闻结果约为500个。
我尝试使用下面的代码来抓取每个结果标题和网址。
然而,许多代码都存在很多问题。有些结果标题是重复的,它会在120左右的结果中停止。此外,"&tbs=cdr%3A1%2Ccd_min%3A1%2F1%2F2016%2Ccd_max%3A12%2F31%2F2016";
无效。仅在2016年无法过滤结果。
我在浏览器中检查了string
谷歌搜索网址应该是正确的。
我不知道我的代码有什么问题。
public static void main(String[] args) throws UnsupportedEncodingException, IOException {
String[] line = new String[10000];
final int[] score = { 0};
String google = "http://www.google.com.hk/search?q=";
String search = "panda";
String charset = "UTF-8";
String news="&tbm=nws";
String string = google + URLEncoder.encode(search , charset) + news+"&num=100"+"&tbs=cdr%3A1%2Ccd_min%3A1%2F1%2F2016%2Ccd_max%3A12%2F31%2F2016";
// 100 results in every pages & results in 2016
System.out.println(string);
String userAgent ="Chrome/57.0.2987.133";
int numberOfResultpages = 500; //
int idx =0;
int count =0;
for (int i = 0; i < numberOfResultpages; i++){
{
Document document = Jsoup.connect(string).userAgent(userAgent).timeout(5000) .data("start",""+i).get();
Elements links = document.select( ".r>a");
for (Element link : links) {
System.out.println(count++);
String title = link.text();
String url = link.absUrl("href"); // Google returns URLs in format "http://www.google.com/url?q=<url>&sa=U&ei=<someKey>".
url = URLDecoder.decode(url.substring(url.indexOf('=') + 1, url.indexOf('&')), "UTF-8");
if (!url.startsWith("http")) {
continue; // Ads/news/etc.
}
System.out.println("Title: " + title);
System.out.println("URL: " + url);
line[idx++]=title; // store every result titles into index[]
// }
}
}