2011-02-03 3 views
1

私はGoogle検索結果をPythonで解析したいと思います。すべてが完璧に機能しましたが、今は空のリストを取得しています。Googleの検索結果を解析するBeautifulSoupスクリプトが機能しなくなりました。

query = urllib.urlencode({'q': self.Tagsinput.GetValue()+footprint,'ie': 'utf-8', 'num':searchresults, 'start': '100'}) 
result = url + query1 
myopener = MyOpener() 
page = myopener.open(result) 
xss = page.read() 
soup = BeautifulSoup.BeautifulSoup(xss) 
contents = [x['href'] for x in soup.findAll('a', attrs={'class':'l'})] 

このスクリプトは12月に完全に機能し、現在は機能しなくなりました。私の知る限りは、問題を理解し

は、この行である:私は内容を印刷するとき

contents = [x['href'] for x in soup.findAll('a', attrs={'class':'l'})] 

プログラムは、空のリストを返します:[]

してください、誰も、助け。

+3

通常のGoogle検索ウェブインターフェイスに自動的にリクエストしますか?彼らがあなたをブロックしているなら、あなたは全く驚くべきではありません。 APIを使用します。 – geoffspear

+0

これはそうではありません:スープの結果が存在する、私はスープを解析できません。 – Slava

+0

Googleでは、正面ページのレイアウトをマイナーな方法で定期的に変更しています。生のHTMLを構文解析するという考え方に慣れているなら、たぶん、新しい属性を再設計した後の内容を把握するだけで済みます。スープをダンプし、それを識別する新しい方法を探してください。 – chmullig

答えて

4

The APIも非常によく機能します。簡単に解析して操作できるシンプルなJSONです。

import urllib, json 
BASE_URL = 'http://ajax.googleapis.com/ajax/services/search/web?v=1.0&' 
url = BASE_URL + urllib.urlencode({'q' : SearchTerm.encode('utf-8')}) 
raw_res = urllib.urlopen(url).read() 
results = json.loads(raw_res) 
hit1 = results['responseData']['results'][0] 
prettyresult = ' - '.join((urllib.unquote(hit1['url']), hit1['titleNoFormatting'])) 
関連する問題