Вы можете использовать более программный интерфейс API от Google, чтобы получить результаты по сравнению с пытаюсь экранировать скрести человеческий интерфейс поиска, нет проверки ошибок или утверждение это соответствует всем Google T & Cs, рекомендуем вам заглянуть в детали, используя этот адрес:
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'},
...
]
Чтобы использовать API пользовательского поиска Google, вам необходимо зарегистрироваться в качестве разработчика. Вы получаете 100 бесплатных запросов (я не уверен, если это API вызовы или позволяет нумерацией страниц одного и того же запроса считать как 1 запрос) в день:
- Зарегистрируйтесь @https://console.developers.google.com
- Создание проекта
- Создать
key
- Включить API пользовательского поиска
- Создание пользовательского поиска @https://cse.google.com
- Используйте фиктивный си т.е инициализацию CSE
- Отредактируйте CSE искать все веб-
- Удалить фиктивный сайт
- Получить ссылку CSE (смотреть на общественный URL для
cx=<cse reference>
)
вы можно использовать 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
вы можете сделать аналогичное разбиение на страницы на вышесказанное.
Есть много других доступных параметров вы можете посмотреть документацию REST для CSE: https://developers.google.com/custom-search/json-api/v1/reference/cse/list#request
Google также имеет библиотеку клиента 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']
Google принудительный лимит, максимальное количество результатов на странице равно 100. – AChampion
Любые другие способы ....? –
Это не 100 страниц, это 100 результатов. –