1)你試圖達到結果的方式是錯誤的。 重要提示:所有這三個搜索引擎都有不同的顯示結果的方式。
2)您應該檢查並找出在通過瀏覽器觸發任何搜索查詢後顯示的HTML
。使用瀏覽器控制檯檢查元素。
每當我們在這三個搜索引擎,我們得到不同形式的結果搜索任何東西:
在冰
<li class="b_algo" data-bm="8">
<h2><a href="https://en.wikipedia.org/wiki/Keanu_Reeves" h="ID=SERP,5133.1"><strong>Keanu Reeves</strong> - <strong>Wikipedia</strong>, the free encyclopedia</a></h2>
<div class="b_caption">
<div class="b_attribution"><cite>https://<strong>en.wikipedia.org</strong>/wiki/<strong>Keanu_Reeves</strong></cite>
</div>
<p><strong>Keanu</strong> Charles <strong>Reeves</strong> (/ k eɪ ˈ ɑː n uː/kay-AH-noo [citation needed]; born September 2, 1964) is a Canadian actor, producer, director and musician.</p>
</div>
</li>
在雅虎
<div class="compTitle options-toggle">
<h3 class="title"><a class=" td-u" data-sb="/beacon/clk;_ylt=A2oKmK.cOOlXskYAmKe7HAx.;_ylu=X3oDMTBycWJpM21vBGNvbG8Dc2czBHBvcwMxBHZ0aWQDBHNlYwNzcg--" href="https://en.wikipedia.org/wiki/Keanu_Reeves" referrerpolicy="origin" target="_blank" data-cff="57e9389d37daf"><b>Keanu</b> Reeves - Wikipedia, the free encyclopedia</a></h3>
<div><span class=" fz-ms fw-m fc-12th wr-bw">en.wikipedia.org/wiki/<b><b>Keanu</b></b>_Reeves</span>
</div>
</div>
在谷歌
<h3 class="r"><a href="https://en.wikipedia.org/wiki/Keanu_Reeves" onmousedown="return rwt(this,'','','','1','AFQjCNHeNQLRv6isQkhVWpt6-1ftD0Q0vw','EZmLIYbQoBakBQ8oWWstdQ','0ahUKEwjz_KKbp63PAhVKrY8KHVnuBPUQFggcMAA','','',event)">Keanu Reeves - Wikipedia, the free encyclopedia</a></h3>
所以這是不可能的你PROGRAMM Elements result = doc.select("h3.r a");
到findout結果對所有的搜索引擎。
3)限制搜索結果的方式也不正確。你必須爲每個人使用不同的URL query
。
谷歌:use num=1
- https://www.google.com/search?q=test&num=1
兵:use count=1
- http://www.bing.com/search?q=test&count=1
雅虎:use n=1
- https://search.yahoo.com/search?p=test&n=1
當使用BingSearchURL你可以這樣做如下:
public static final String BING_SEARCH_URL = "https://www.bing.com/search";
String searchURL = BING_SEARCH_URL + "?q=" + word + "&count=" + num;
Document doc = Jsoup.connect(searchURL).userAgent("Mozilla/5.0").get();
Elements result = doc.select("li.b_algo h2 a");
for (Element res : result) {
String linkHref = res.attr("href");
//linkHref = linkHref.substring(7, linkHref.indexOf("&")); //No need of doing substring
System.out.println("<a href=" + linkHref + ">" + linkHref + "</a>");
}
然後檢查Yahoo和Bing的HTML源代碼,看看它爲什麼不起作用。有可能他們使用的代碼會隱藏JSoup等簡單分析器的鏈接。 –