Возвращение поиска Google на Python - PullRequest
3 голосов
/ 06 декабря 2010

Я пытаюсь получить первые 20 результатов из поиска Google. Когда я использую urllib2.urlopen(), он выдает ошибку и говорит, что я запрещен. Я слышал, что это как-то связано с фальсификацией строки вашего пользовательского агента, но у меня почти нет опыта работы с urllib2, и я был бы очень признателен, если кто-нибудь мог бы помочь.

Спасибо, giodamelio

Ответы [ 3 ]

2 голосов
/ 06 декабря 2010

Вы, вероятно, должны просто использовать библиотеку, которая выполняет всю тяжелую работу.

xGoogle позволяет получать результаты поиска в списке

Из примеров

from xgoogle.search import GoogleSearch
gs = GoogleSearch("quick and dirty")
gs.results_per_page = 50
results = gs.get_results()
2 голосов
/ 29 декабря 2011
req = urllib2.Request(url)
req.add_header('User-Agent', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3')
response = urllib2.urlopen(req)
2 голосов
/ 06 декабря 2010

Есть два основных способа: получить прямой доступ к API Google или использовать пакет xGoogle.

API Gooogle

Google JSON \ Atom API требует от вас полученияаккаунт и ключ.Это стандартный и предпочтительный способ получения результатов поиска в автоматическом режиме, что означает, что вы не будете забанены на их службе.Запрос довольно прост (цитируя собственный пример Google):

GET https://www.googleapis.com/customsearch/v1?
            key=INSERT-YOUR-KEY&cx=017576662512468239146:omuauf_lfve&q=lectures

Вы получите ответ JSON, который может быть легко обработан с использованием многочисленных пакетов Python.

xGoogle

Пакет xgoogle несколько быстрее (см. ответ Лакшмана Прасада ), но может быть заблокирован (или, что еще хуже, получить неправильные или пустые ответы) Google, что приведет к остановке вашей программыработает.

Плюсы и минусы

Если вам просто нужно выполнить некоторые поиски для проекта, используйте xGoogle.Если ваша программа должна длиться дольше, а поиск не блокируется, потратьте 15 минут, необходимых для использования их API.

...