2013-07-05 2 views
4

Google에서 추정 한 결과를 얻고 싶습니다. 나는 Python3.3을 사용하여 BeautifulSoup 및 urllib.request로이 작업을 수행하려고합니다. 이것은 지금까지의 간단한 코드입니다파이썬으로 google resultstats를 긁기

def numResults(): 
try: 
    page_google = '''http://www.google.de/#output=search&sclient=psy-ab&q=pokerbonus&oq=pokerbonus&gs_l=hp.3..0i10l2j0i10i30l2.16503.18949.0.20819.10.9.0.1.1.0.413.2110.2-6j1j1.8.0....0...1c.1.19.psy-ab.FEBvxrgi0KU&pbx=1&bav=on.2,or.r_qf.&bvm=bv.48705608,d.Yms&''' 
    req_google = Request(page_google) 
    req_google.add_header('User Agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20120427 Firefox/15.0a1') 
    html_google = urlopen(req_google).read() 
    soup = BeautifulSoup(html_google) 
    scounttext = soup.find('div', id='resultStats') 
except URLError as e: 
    print(e) 
return scounttext 

내 스프레드 변수는 어떻게 든 인코딩되며 그 중 어떤 정보도 얻을 수 없다는 것입니다. 그래서 soup.find doesnt가 ​​일하기 때문에 나는 아무것도 돌려받지 않는다.

내가 뭘 잘못하고 원하는 결과를 추출 할 수 있습니까? 많은 감사!

답변

3

아직이 문제를 해결하지 않은 경우 BeautifulSoup에서 결과를 찾지 못하는 이유는 스프레드 시트에 resultStats가 표시되지 않는다는 것입니다. 요청 (page_google)은 JavaScript 만 반환하며 검색 결과는 표시되지 않습니다. JavaScript가 동적으로로드되고 있습니다. 코드에

print(soup) 

명령을 추가하면 결과를 확인할 수 있습니다. div가 표시되지 않습니다.

다음 코드 :

import sys                                         
from urllib2 import Request, urlopen                                   
import urllib                                        
from bs4 import BeautifulSoup                                    
query = 'pokerbonus'                                       
url = "http://www.google.de/search?q=%s" % urllib.quote_plus(query)                           
req_google = Request(url)                                     
req_google.add_header('User-Agent', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3')           
html_google = urlopen(req_google).read()                                  
soup = BeautifulSoup(html_google)                                   
scounttext = soup.find('div', id='resultStats')                                
print(scounttext) 

가 인쇄됩니다

<div class="sd" id="resultStats">Ungefähr 1.060.000 Ergebnisse</div> 

마지막으로, 구글에 봇을 허용하지 않는 한,이 문제를 해결하는 갈 수있는 더 좋은 방법이 될 수 있습니다 셀레늄 Webdriver 같은 도구를 사용하여 검색 결과를 긁어 낸다.