1

Я использую библиотеку запросов в python до GET данных из результатов Google. https://www.google.com.pk/#q=pizza&num=10 вернет первые 10 результатов Google, как я упомянул num=10. В конечном итоге https://www.google.com.pk/#q=pizza&num=100 вернет 100 результатов результатов Google.Как очистить более 100 страниц Google за один проход

Но

Если я пишу любое число больше чем 100 пусть https://www.google.com.pk/#q=pizza&num=200, Google все еще возвращаются первые 100 результатов

Как я могу получить больше, чем 100 за один проход?

Код:

import requests 
url = 'http://www.google.com/search' 
my_headers = { 'User-agent' : 'Mozilla/11.0' } 
payload = { 'q' : pizza, 'start' : '0', 'num' : 200 } 
r = requests.get(url, params = payload, headers = my_headers) 

В «г» Я получаю первые 100 результатов только URL, в Google, не 200

+0

Google принудительный лимит, максимальное количество результатов на странице равно 100. – AChampion

+0

Любые другие способы ....? –

+0

Это не 100 страниц, это 100 результатов. –

ответ

4

Вы можете использовать более программный интерфейс 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&#39;s information, including webpages, images, videos and more. \n<b>Google</b> has many special features to help you find exactly what you&#39;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'] 
+0

Ну, спасибо за это, Он дает результат в первых попытках, после чего он не получает какой-либо результат, может быть, Google начинает блокировать мой IP-адрес? Любое решение? –

+0

Официально URL-адрес поиска AJAX устарел, и на самом деле большинство форм этого URL было удалено несколько лет назад, эта одна конкретная форма была предположительно пропущена. Существуют пределы поиска API. Официальный способ программного доступа к Google - через API пользовательского поиска https://developers.google.com/custom-search/, и вам нужно будет подписать ключ - есть существенные ограничения на это, и вам нужно будет заплатить если вы хотите получить полный доступ. – AChampion

+0

NP. Вы получаете 100 запросов в день с CSE, прежде чем вам нужно будет начать платить. – AChampion

-1

Вы для этой цели можно использовать автоматизацию браузера. Я использовал это, чтобы очистить список изображений. Используя автоматизацию браузера, вы можете нажать на следующие или предыдущие кнопки и получить результаты. Я не могу вставить код.