2017-08-07 179 views
1

我試圖寫一個小程序,你輸入搜索查詢時,它會打開瀏覽器中的使用結果,然後刮谷歌的搜索結果,並打印它,我不知道我會去做刮擦部分。這一切到目前爲止:刮谷歌的搜索結果片斷

import webbrowser 
query = input("What would you like to search: ") 
for word in query: 
    query = query + "+" 
webbrowser.open("https://www.google.com/search?q="+query) 

讓我們說他們說類型:「誰是唐納德特朗普?」 他們的瀏覽器將打開,這將顯示: donald trump search result

我怎麼會一起去,並通過刮維基百科提供的摘要,然後有它打印回給用戶?或者在任何情況下颳去網站上的任何數據?

+0

你說的是從Wikipedia.com刮數據或刮小片段谷歌給你提供* *維基百科? – Mangohero1

+0

的片段將是首選,因爲它提供了一個基本的總結,這一切我需要/ – uberdr3eam

+0

我不認爲for循環做什麼,你認爲它。試試'query = query.replace(「」,「+」)'。 – cdo256

回答

2

雖然有真的挺你可以抽取數據的幾種方法中,我使用了一個名爲BeautifulSoup庫證明了這一點。我相信這比使用webbrowser來抓取數據要靈活得多。不要擔心,如果這對你來說看起來很新,我會引導你完成這些步驟。


您需要 BeautifulSouprequests模塊。如果你沒有它們, 用pip安裝它們。
導入模塊:

import requests 
from bs4 import BeautifulSoup 

獲取用戶輸入並保存到一個變量:

query = input("What would you like to search: ") 
query = query.replace(" ","+") 
query = "https://www.google.com/search?q=" + query 

使用requests模塊發送GET請求主機:

r = requests.get(query) 
html_doc = r.text 

實例化一個BeautifulSoup對象:

soup = BeautifulSoup(html_doc, 'html.parser') 

最後刮所需的文本:

for s in soup.find_all(id="rhs_block"): 
    print(s.text) 

通知的ID。此ID是Google放入所有代碼段文本的容器。通過這種方式,它會將所有在該容器中找到的文本全部吐出,但當然,您可以將其格式化爲看起來更整齊一些。
順便說一下,如果碰巧碰到UnicodeEncodeError,則必須在每個text屬性的末尾附加.encode('utf-8')
讓我知道你是否還有其他問題。乾杯!

+0

謝謝!!!!!! – uberdr3eam