Python - простой способ очистить Google, загрузить лучшие N хитов (целые .html документы) для данного поиска?

Есть ли простой способ очистить Google и написать текст (только текст) верхнего N (скажем, 1000).html(или любых других) документов для данного поиска?

В качестве примера предположим, что вы ищете фразу "большой плохой волк" и загружаете только текст из лучших 1000 хитов - т.е. фактически загружаете текст с этих 1000 веб-страниц (но только эти страницы, а не весь сайт).

Я предполагаю, что это будет использовать библиотеку urllib2? Я использую Python 3.1, если это помогает.

Ответ 1

Официальным способом получения результатов от Google является использование API пользовательского поиска. Как icktoofay комментарии, другие подходы (например, непосредственно очистка результатов или использование xgoogle) break Условия использования Google. Из-за этого вам может потребоваться использовать API из другой поисковой системы, например Bing API или Yahoo! сервис.

Ответ 2

Откажитесь от BeautifulSoup, чтобы очистить содержимое от веб-страниц. Предполагается, что он очень терпим к сломанным веб-страницам, которые помогут, потому что не все результаты хорошо сформированы. Таким образом, вы должны уметь:

  • Запрос http://www.google.ca/search?q=QUERY_HERE
  • Извлеките и следуйте ссылкам результатов с помощью BeautifulSoup (похоже, что class= "r" для ссылок на результат)
  • Извлечение текста из страниц результатов с помощью BeautifulSoup

Ответ 3

Как уже упоминалось, очистка Google нарушает их TOS. Тем не менее, это, вероятно, не тот ответ, который вы ищете.

Там доступен PHP script, который отлично справляется со сбоями Google: http://google-scraper.squabbel.com/ Просто укажите ему ключевое слово, количество результатов вы хотите, и он вернет вам все результаты. Просто проанализируйте возвращаемые URL-адреса, используйте urllib или curl для извлечения источника HTML, и все готово.

Вам также не следует пытаться очистить Google, если вы не получили более 100 прокси-серверов. Они могут временно временно заблокировать ваш IP-адрес после нескольких попыток.