2015-07-10 62 views
0

嘗試通過Google搜索結果進行檢索。此代碼與其他所有網站的效果相當,我嘗試過,但不適用於Google。它返回一個空列表。BeautifulSoup無法抓取谷歌搜索結果?

from BeautifulSoup import BeautifulSoup 
import requests 

def googlecrawler(search_term): 
    url="https://www.google.co.in/?gfe_rd=cr&ei=UVSeVZazLozC8gfU3oD4DQ&gws_rd=ssl#q="+search_term 
    junk_code=requests.get(url) 
    ok_code=junk_code.text 
    good_code=BeautifulSoup(ok_code) 
    best_code=good_code.findAll('h3',{'class':'r'}) 
    print best_code 


googlecrawler("healthkart") 

它應該返回這樣的東西。

<h3 class="r"><a href="/url? sa=t&amp;rct=j&amp;q=&amp;esrc=s&amp;source=web&amp;cd=6&amp;cad=rja&amp;uact=8&amp;ved=0CEIQFjAF&amp;url=http%3A%2F%2Fwww.coupondunia.in%2Fhealthkart&amp;ei=qFmfVc2fFNO0uASti4PwDQ&amp;usg=AFQjCNFHMzqn-rH4Hp-fZK0E4wwxJmevEg&amp;sig2=QgwxMBdbPndyQTSH10dV2Q" onmousedown="return rwt(this,'','','','6','AFQjCNFHMzqn-rH4Hp-fZK0E4wwxJmevEg','QgwxMBdbPndyQTSH10dV2Q','0CEIQFjAF','','',event)" data-href="http://www.coupondunia.in/healthkart">HealthKart Coupons: July 2015 Coupon Codes</a></h3> 
+4

爬行Google違反了他們的服務條款,他們保留將技術障礙落實到位以執行這些條款的權利。因此,我們給你的任何答案都可能以相當短的順序破解,因爲執行它的障礙得到改善。如果您想以編程方式搜索Google,請通過支持的API註冊一個密鑰。 –

+0

哦好吧..只是試圖抓取他們的樂趣..瞭解..謝謝你:) –

+0

@TusharBakaya如果你使用Chrome瀏覽器或Firefox瀏覽頁面源,你應該看到它實際上返回爲Javascript,然後組裝到HTML客戶端。我的猜測是你正在檢查元素,而這會告訴你後JS的結果。 'BeautifulSoup'只抓取了原始的JS源代碼。 –

回答

0

看着good_code我不能看到一個h3class "r"的。這就是爲什麼你的代碼返回一個空的列表。

這樣的代碼沒有問題,而是說你正在搜索的內容不存在。

你期待什麼回報?

+0

這就是問題所在。正如Matthew所指出的那樣,BS只是抓住了原始的基於JS的源代碼。 –