2016-07-28 87 views
3

我想使用python脚本在Google中搜索文本,并返回每个结果的名称,描述和URL。我目前在使用此代码:用Python搜索Google地图

from google import search 

ip=raw_input("What would you like to search for? ") 

for url in search(ip, stop=20): 
    print(url) 

这只返回URL的,我怎样才能返回每个URL的名称和描述?

谢谢!

+0

你使用哪种谷歌搜索API? – Jokab

回答

7

不exatcly我一直在寻找,但我发现自己一个很好的解决方案,现在(如果我将能够使这个更好,我可能会修改这个)。我结合搜索在谷歌和我一样来解析HTML页面(只返回URL)以及美丽的汤包:

from google import search 
import urllib 
from bs4 import BeautifulSoup 

def google_scrape(url): 
    thepage = urllib.urlopen(url) 
    soup = BeautifulSoup(thepage, "html.parser") 
    return soup.title.text 

i = 1 
query = 'search this' 
for url in search(query, stop=10): 
    a = google_scrape(url) 
    print str(i) + ". " + a 
    print url 
    print " " 
    i += 1 

这给我的网页和链接标题的列表。

而另一位伟大的解决方案:

from google import search 
import requests 

for url in search(ip, stop=10): 
      r = requests.get(url) 
      title = everything_between(r.text, '<title>', '</title>') 
9

我假设你正在使用this library by Mario Vilas,因为他的代码中出现了stop=20参数。看起来这个图书馆不能够返回任何东西,除了这些网址之外,这使得它可怕地不发达。因此,您想要做的事情对于您当前使用的图书馆来说是不可能的。我建议你改用abenassi/Google-Search-API。然后,你可以简单地做:

from google import google 
num_page = 3 
search_results = google.search("This is my query", num_page) 
for result in search_results: 
    print(result.description) 
+0

我越来越:回溯(最后最近一次调用): 文件“Z:/test/test_google.py” 57行,在 从谷歌谷歌进口 导入错误:无法导入名谷歌 – Yarden

+0

@Yarden您将有首先下载该库。使用链接中的说明。 – Jokab

+0

谢谢,现在它运行并不会返回任何东西... – Yarden

0

他们中的大多数我尝试使用,但并没有为我工作了或送给喜欢,尽管导入包没有找到搜索模块错误。或者我没工作了与硒网络驱动器,如果用火狐幻影Web浏览器使用它的伟大工程,但我仍然觉得这是一个有点慢来讲执行时间,因为它首先查询浏览器,然后返回搜索结果。

所以我想使用谷歌API和它的工作原理神速并返回结果准确

之前,我在这里分享代码是几个简单的提示,如下: -

  1. 注册在谷歌API来获取谷歌的API密钥(免费版)
  2. 现在搜索谷歌自定义搜索并设置免费帐户来获得一个自定义搜索ID
  3. 现在在你的Python项目 通过编写添加这个包(谷歌API的Python客户端)(可以做到!PIP安装谷歌的API的Python客户端)

这就是它和所有你现在要做的就是运行该代码: -

from googleapiclient.discovery import build 

my_api_key = "your API KEY TYPE HERE" 
my_cse_id = "YOUR CUSTOM SEARCH ENGINE ID TYPE HERE" 

def google_search(search_term, api_key, cse_id, **kwargs): 
     service = build("customsearch", "v1", developerKey=api_key) 
     res = service.cse().list(q=search_term, cx=cse_id, **kwargs).execute() 
     return res['items'] 

results= google_search("YOUR SEARCH QUERY HERE",my_api_key,my_cse_id,num=10) 

for result in results: 
     print(result["link"])