Ответ 1
Если вы хотите, чтобы Google искал "правильно" через интерфейс программирования, посмотрите API Google. Они не только являются официальным способом поиска Google, но также не могут измениться, если Google изменит макет страницы результатов.
Рассмотрим следующий код Python:
30 url = "http://www.google.com/search?hl=en&safe=off&q=Monkey" 31 url_object = urllib.request.urlopen(url); 32 print(url_object.read());
Когда это выполняется, генерируется Исключение:
File "/usr/local/lib/python3.0/urllib/request.py", line 485, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 403: Forbidden
Однако, когда это помещается в браузер, поиск возвращается как ожидалось. Что здесь происходит? Как я могу это преодолеть, чтобы я мог программно искать Google?
Любые мысли?
Если вы хотите, чтобы Google искал "правильно" через интерфейс программирования, посмотрите API Google. Они не только являются официальным способом поиска Google, но также не могут измениться, если Google изменит макет страницы результатов.
это должно сделать трюк
user_agent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7'
url = "http://www.google.com/search?hl=en&safe=off&q=Monkey"
headers={'User-Agent':user_agent,}
request=urllib2.Request(url,None,headers) //The assembled request
response = urllib2.urlopen(request)
data = response.read() // The data u need
Как lacqui предложил, API Google - это то, как они хотят вас делать запросы из кода. К сожалению, я обнаружил, что их документация была нацелена на людей, которые пишут веб-страницы AJAX, не делая необработанных HTTP-запросов. Я использовал заголовки LiveHTTP для отслеживания HTTP-запросов, которые были сделаны с помощью образцов, и я нашел сообщение ddipaolo полезно.
Еще одна вещь, которая меня испортила: они ограничивают вас результатами первых 64 из запроса. Обычно это не проблема, если вы просто предоставляете веб-пользователям окно поиска, но не полезно, если пытаетесь использовать Google для перехода данных. Я думаю, они не хотят, чтобы вы отправляли данные с помощью своего API. Этот номер 64 со временем изменился и варьируется между поисковыми продуктами.
Обновление: Кажется, они определенно не хотят, чтобы вы отправляли данные. В конце концов вы получите ошибку 403 со ссылкой на это уведомление о доступе API.
Ознакомьтесь с Условиями использования API (-ов), которые вы используете (связаны с правой боковой панелью) и убедитесь в соответствии. Вероятно, мы заблокировали вас за одно из следующих нарушений Условий использования. Мы получили автоматические запросы, такие как очистка и предварительная выборка. Автоматизированные запросы запрещены; все запросы должны быть сделаны в результате действия конечного пользователя.
Они также перечисляют другие нарушения, но я думаю, что тот, который вызвал меня. Возможно, мне придется исследовать службу Yahoo BOSS. Кажется, у него не так много ограничений.
Вы делаете это слишком часто. У Google есть ограничения на то, чтобы не допустить попадания в поисковые роботы. Вы также можете попробовать настроить пользовательский агент на то, что более похоже на обычный браузер.