2017-08-07 168 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