2014-11-23 213 views
1

注:我無法提供任何代碼,因爲我還沒有開始此項目的工作。我不是在尋找能夠爲我工作的代碼。我想要建議和方向。訪問Google搜索結果

我想知道通過python訪問Google搜索結果的最佳方式。

例如:當你輸入查詢Premier League Table到谷歌搜索將返回一個不錯的表的所有信息:

enter image description here

我只需要在表中的信息。我搜索了答案,並碰到:

  1. 谷歌應用程序引擎 - 不要以爲我需要這個,因爲它看起來更像是一個平臺來託管你的應用程序,一旦它完成。
  2. 自定義搜索API(Google) - 其付費。我需要免費的東西。
  3. pygoogle - 它的死者
  4. duckduckgo API - Duckduckgo search不會將表格作爲第一個結果。
  5. 硒 - 不是我在找的東西
  6. urllib/BeautifulSoup - 頁面源不是HTML(我認爲它的AJAX,不確定)。

任何建議都非常有幫助

+1

爲什麼不從初級資源訪問它,如[這一個](http://www.premierleague.com/en-gb/matchday 20支球隊名單/league-table.html)? Afaik谷歌只會從最好的結果中彙總這些數據。至於訪問搜索結果,我現在知道的最好的解決方案是[this](https://github.com/NikolaiT/GoogleScraper) – pad 2014-11-23 20:54:08

+0

我想要遍歷更多這樣的表格(團隊排名)。它只是我喜歡簡單的谷歌佈局。官方網站在他們的頁面上有很多「額外」的東西,我發現這些東西是不必要的,更不用說有不同的佈局,它們需要不同的代碼。 – Beginner 2014-11-23 20:59:16

回答

1

退房的OpenFooty API,因爲它可能有你正在尋找的信息。結果可以通過XML,PHP數組和JSON格式獲得。他們似乎有很多不同的信息,但不知道你的要求,我不能說它是否適合你。但是,可以肯定的是,這比拼湊一些網站要容易得多。

祝你好運!

+0

哇。我不知道這個東西有一個API。真的很有幫助。非常感謝 – Beginner 2014-11-23 21:29:42

0

最好的辦法是用硒(這將是更好地使用xvfb的,以避免瀏覽器中顯示出來,我基本覆蓋了的情況下,讓你開始)

from selenium import webdriver 
from lxml import html as lh 

url = "http://www.google.com/search?q=premier+league+table" 
br = webdriver.Firefox() 
br.get(url) 

tree = lh.fromstring(br.page_source) 

現在你可以使用xpath表達式從表格中提取元素。例如,這個人是從該表

tree.xpath('//div[@class="sol-td-entry"]/text()') 
Out[36]: 
[' Chelsea ', 
' Southampton ', 
' Man City ', 
' Man United ', 
' Newcastle ', 
' West Ham ', 
' Swansea City ', 
' Arsenal ', 
' Everton ', 
' Tottenham ', 
' Stoke City ', 
' Liverpool ', 
' West Brom ', 
' Sunderland ', 
' Crystal Palace ', 
' Hull City ', 
' Aston Villa ', 
' Leicester City ', 
' Burnley FC ', 
' QPR ']