13

Làm cách nào tôi có thể lập trình bằng cách sử dụng thư viện máy khách Google Python làm công cụ tìm kiếm tùy chỉnh API tìm kiếm của Google để trả về danh sách các liên kết n đầu tiên dựa trên một số cụm từ và thông số của tìm kiếm nâng cao mà tôi truy vấn ?.Cách truy vấn tìm kiếm nâng cao với API google customsearch?

Tôi đã cố gắng kiểm tra documentation (Tôi không tìm thấy bất kỳ ví dụ nào) và answer này. Tuy nhiên, sau này không hoạt động, vì hiện tại không có hỗ trợ cho AJAX API. Cho đến nay tôi đã cố gắng này:

from googleapiclient.discovery import build 
import pprint 

my_cse_id = "test" 

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

results = google_search('dogs', my_api_key, my_cse_id, num=10) 

for result in results: 
    pprint.pprint(result) 

Và đây:

import pprint 

from googleapiclient.discovery import build 


def main(): 
    service = build("customsearch", "v1",developerKey="<My developer key>") 

    res = service.cse().list(q='dogs').execute() 
    pprint.pprint(res) 

if __name__ == '__main__': 
    main() 

Vì vậy, bất kỳ ý tưởng về cách làm và advanced search với API công cụ tìm kiếm của google ?. Đây là cách thông tin của tôi nhìn vào google console:

credentials

+0

lỗi gì bạn nhận được? –

+0

@EugeneLisitsky, tôi không gặp lỗi nào. Vấn đề là tôi không hiểu cách thực hiện [tìm kiếm nâng cao] (https://www.google.ca/advanced_search) bằng API của Google. Ví dụ, làm thế nào tôi có thể truy vấn theo lập trình với google tất cả các 'url' chứa' thực phẩm cho chó tốt nhất' trong 'english' trong' UK'. –

Trả lời

4

Trước tiên, bạn cần phải xác định một tìm kiếm tùy chỉnh như mô tả here, thì chắc chắn rằng my_cse_id của bạn phù hợp với google API custom search (cs) id, ví dụ

cx='017576662512468239146:omuauf_lfve' 

là một công cụ tìm kiếm chỉ tìm kiếm tên miền kết thúc bằng .com.

Tiếp theo, chúng tôi cần developerKey.

from googleapiclient.discovery import build 
service = build("customsearch", "v1", developerKey=dev_key) 

Bây giờ chúng tôi có thể thực hiện tìm kiếm của chúng tôi.

res = service.cse().list(q=search_term, cx=my_cse_id).execute() 

Chúng tôi có thể thêm thông số tìm kiếm bổ sung, như ngôn ngữ hoặc quốc gia bằng cách sử dụng đối số được mô tả here, ví dụ:

res = service.cse().list(q="the best dog food", cx=my_cse_id, cr="countryUK", lr="lang_en").execute() 

sẽ serch cho "thức ăn cho chó tốt nhất" bằng tiếng Anh và trang web cần phải đến từ Vương quốc Anh.


Mã được sửa đổi sau đây hiệu quả với tôi. api_key đã bị xóa vì không bao giờ được sử dụng.

from googleapiclient.discovery import build 

my_cse_id = "012156694711735292392:rl7x1k3j0vy" 
dev_key = "<Your developer key>" 

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

results = google_search('boxer dogs', my_cse_id, num=10, cr="countryCA", lr="lang_en") 
for result in results: 
    print(result.get('link')) 

Output

http://www.aboxerworld.com/whiteboxerfaqs.htm 
http://boxerrescueontario.com/?section=available_dogs 
http://www.aboxerworld.com/abouttheboxerbreed.htm 
http://m.huffpost.com/ca/entry/10992754 
http://rawboxers.com/aboutraw.shtml 
http://www.tanoakboxers.com/ 
http://www.mondlichtboxers.com/ 
http://www.tanoakboxers.com/puppies/ 
http://www.landosboxers.com/dogs/puppies/puppies.htm 
http://www.boxerrescuequebec.com/ 
+0

Cảm ơn sự giúp đỡ !. Tuy nhiên, câu hỏi của tôi sắp sửa thực hiện [tìm kiếm nâng cao] (https://www.google.ca/advanced_search) (nghĩa là thực hiện truy vấn google với các cụm từ, từ, vùng, miền, ngôn ngữ cụ thể, v.v.). Mục tiêu chính của tôi là lập trình thực hiện tìm kiếm nâng cao. –

+0

Ngoài ra, những gì tôi không hiểu là lý do tại sao mẫu mã của bạn chỉ trả về liên kết bài giảng CS thay vì liên kết chó. Bạn có thể cho chúng tôi biết cách tìm kiếm nâng cao tất cả các url của chó boxer ở Seattle bằng tiếng Anh không ?. –

+1

Cảm ơn bạn đã làm rõ! Xem câu trả lời cập nhật, chó boxer ở Canada nói tiếng Anh. –

1

Đây là muộn nhưng hy vọng nó sẽ giúp người ...

Để sử dụng tìm kiếm nâng cao

response=service.cse().list(q="mysearchterm", 
cx="017576662512468239146:omuauf_lfve",).execute() 

Phương pháp list() mất trong hơn args để giúp nâng cao tìm kiếm của bạn ...kiểm tra args ở đây: https://developers.google.com/custom-search/json-api/v1/reference/cse/list

2

Một thay thế bằng cách sử dụng thư viện yêu cầu python nếu bạn không muốn sử dụng google khám phá api:

import requests, pprint 
q='italy' 
api_key='AIzaSyCs.....................' 

q = requests.get('https://content.googleapis.com/customsearch/v1', 
    params={ 'cx': '013027958806940070381:dazyknr8pvm', 'q': q, 'key': api_key}) 
pprint.pprint(q.json()) 
+0

Thanx công việc của nó, nhưng tại sao không có gì lấy ra khi chúng tôi vượt qua một truy vấn của nhiều từ, như: "bên valencia" ..? –

Các vấn đề liên quan