我一直在學習很多python最近在工作的一些項目上工作。谷歌搜索使用Python刮網
目前我需要做一些網頁搜刮谷歌搜索結果。我發現幾個網站演示瞭如何使用ajax google api進行搜索,但是在嘗試使用它後,它似乎不再受支持。有什麼建議麼?
我一直在尋找相當長的一段時間找到一種方式,但似乎無法找到任何解決方案,目前的工作。
我一直在學習很多python最近在工作的一些項目上工作。谷歌搜索使用Python刮網
目前我需要做一些網頁搜刮谷歌搜索結果。我發現幾個網站演示瞭如何使用ajax google api進行搜索,但是在嘗試使用它後,它似乎不再受支持。有什麼建議麼?
我一直在尋找相當長的一段時間找到一種方式,但似乎無法找到任何解決方案,目前的工作。
您可以隨時直接刮取Google結果。爲此,您可以使用網址https://google.com/search?q=<Query>
這將返回前10個搜索結果。
然後,您可以使用lxml來解析頁面。根據您使用的東西,你可以通過CSS選擇器(.r a
)或使用XPath的選擇器(//h3[@class="r"]/a
)
在某些情況下所產生的URL重定向到谷歌查詢結果節點樹。通常它包含一個查詢參數q
,它將包含實際的請求URL。使用LXML和
示例代碼請求
from urllib.parse import urlencode, urlparse, parse_qs
from lxml.html import fromstring
from requests import get
raw = get("https://www.google.com/search?q=StackOverflow").text
page = fromstring(raw)
for result in pg.cssselect(".r a"):
url = result.get("href")
if url.startswith("/url?"):
url = parse_qs(urlparse(url).query)['q']
print(url[0])
在谷歌禁止你的IP的說明:根據我的經驗,谷歌只有當你開始搜索請求發送垃圾郵件谷歌禁止。如果谷歌認爲你是機器人,它將以503迴應。
謝謝,我能夠得到與此類似的工作。 – pbell
截至今天,這不適合我。當我查看Google搜索結果頁面的源代碼和DOM結構時,看起來好像是以JavaScript加載和呈現結果,這會阻止這種天真的刮擦。這是否適用於其他人? –
@Lane Rettig工作正常。 –
您可以在沒有API的情況下使用Google進行搜索,但如果他們懷疑您是機器人,您可能會被Google禁止。閱讀TOS,您可能需要付費才能以任何重要方式使用他們的API。 – Ares
我研究瞭如何在沒有API的情況下做到這一點,我不得不改變我的頭/用戶代理信息。但即使我這樣做,我仍然無法獲得結果。如果可以的話,我會在每個請求之間放置一個睡眠定時器,以免被視爲bot。 – pbell
我已經寫了一個谷歌搜索機器人,它工作的很好,但由於使用機器人直接違反谷歌的ToS,我不會發布它。無論你想要做什麼,也許都要通過官方的API。 – Ares