2016-07-28 80 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"])