您可以使用更編程API從谷歌得到的結果與努力到屏幕刮的人肉搜索界面,沒有錯誤檢查或斷言這是所有谷歌牛逼&銫的規定,建議您考慮使用此URL的細節:
import requests
def search(query, pages=4, rsz=8):
url = 'https://ajax.googleapis.com/ajax/services/search/web'
params = {
'v': 1.0, # Version
'q': query, # Query string
'rsz': rsz, # Result set size - max 8
}
for s in range(0, pages*rsz+1, rsz):
params['start'] = s
r = requests.get(url, params=params)
for result in r.json()['responseData']['results']:
yield result
例如獲得200個'google'結果:
>>> list(search('google', pages=24, rsz=8))
[{'GsearchResultClass': 'GwebSearch',
'cacheUrl': 'http://www.google.com/search?q=cache:y14FcUQOGl4J:www.google.com',
'content': 'Search the world's information, including webpages, images, videos and more. \n<b>Google</b> has many special features to help you find exactly what you're looking\xa0...',
'title': '<b>Google</b>',
'titleNoFormatting': 'Google',
'unescapedUrl': 'https://www.google.com/',
'url': 'https://www.google.com/',
'visibleUrl': 'www.google.com'},
...
]
要使用Google的自定義搜索API,您需要註冊爲開發者。你得到100個免費查詢(我不知道這是API調用或允許同一查詢分頁算作1個查詢)每天:
的你可以使用requests
使查詢:
import requests
url = 'https://www.googleapis.com/customsearch/v1'
params = {
'key': '<key>',
'cx': '<cse reference>',
'q': '<search>',
'num': 10,
'start': 1
}
resp = requests.get(url, params=params)
results = resp.json()['items']
隨着start
你可以做與上面類似的分頁。
有很多可用的,你可以看一下對CSE的REST文檔其他參數:https://developers.google.com/custom-search/json-api/v1/reference/cse/list#request
谷歌也有一個客戶端API庫:pip install google-api-python-client
你也可以使用:
from googleapiclient import discovery
service = discovery.build('customsearch', 'v1', developerKey='<key>')
params = {
'q': '<query>',
'cx': '<cse reference>',
'num': 10,
'start': 1
}
query = service.cse().list(**params)
results = query.execute()['items']
谷歌強制執行限制,每頁最大結果數爲100. – AChampion
任何其他方式....? –
這不是100頁,它有100個結果。 –