03.28Парсер google через ajax search api
Простейший парсер google через api. Кому надо, тот сам доведёт до ума, с меня только идея
. Позволяет парсить примерно 60к ссылок без бана и капчи с 1 Ip, для большей работоспособности без бана можно попробовать добавить задержку.
Все файлы должны быть в utf-8.
# coding:utf-8 # author: Rushter # site: http://rushter.com import urllib2,random,re,time,json,urllib ff = open("ua.txt").readlines() ques = open("query.txt").readlines() out = open("parsed_query.txt","a") err = 0 for query in ques: try: for j in range(0,12,4): header = {"User-Agent":random.choice(ff)} lnk = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&start={0}&q={1}".format(str(j),urllib.quote(query.strip("\r\n"))) page_request = urllib2.Request(url=lnk, headers=header) page = urllib2.urlopen(url=page_request) pp = json.load(page)["responseData"]["results"] try: for i in xrange(4): out.write(pp[i]["unescapedUrl"]+"\n") out.flush() except: if err>100: break except: if err>100: break err = err+1

мне выдает ошибку в 21 строке :\
Март 28th, 2010 at 18:55
Поправил.
Март 31st, 2010 at 20:20
Если без прокси надо заюзать ajax search api то либа xgoogle есть уже. А вообще спасибо навёл на мысль, я почему то и не подумал что через api должны преференции быть определённые да и когда юзал xgoogle для translate.google он мне очень быстро выкидывал сообщения о нарушении правил позирования api пока я задержку не поставил, что не внушало…
Апрель 21st, 2010 at 11:58
Не «позирования » а «пользования» в прошлом каменте. Подвела исправлялка ошибок в ff
Апрель 21st, 2010 at 12:00
Стоп. Отставить. Посмотрел код модуля searh из xgoogle он оказывается не на api а как простой парсер. Странная там штука модуль переводчик юзает api модуль парсер – нет.
Тогда вдвойне спасибо ещё и за пример.
Апрель 21st, 2010 at 12:13
охуенно пашет
спасибо
Апрель 22nd, 2010 at 22:12
Результаты ajax search api и те что выдает гугл в основной выдаче ну очень сильно различаются, гугловцы сами об этом писали неоднократно.
Август 2nd, 2010 at 04:59
Всё работает отлично, но есть одно «но».
В ответе получаются только 8 страниц по 4 записи. Можно ли как-то увеличить количество записей на странице и количество страниц?
Август 6th, 2010 at 16:21
Ограничения такие, этот скрипт для массового парсинга запросов и результатов топа.
Август 6th, 2010 at 16:30
только вот позицию в выдаче никак не определишь. 5 раз послал один и тот же запрос и получил 5 разых ответов. (
В этом примере не используется ключ API.
Если его передать в запросе – это не сможет повлиять на результаты?
Август 6th, 2010 at 16:46
Не знаю, не пробовал.
Такой скрипт хорош для сбора ресурсов под постилки.
Август 6th, 2010 at 17:59
А не видели ли что нибуть похожее для yandex?
Август 15th, 2010 at 17:46
Есть, если поискать по блогу можно найти.
Август 15th, 2010 at 22:45
А как это использовать? Можно объяснить подробнее?
Я не программист.
Август 24th, 2010 at 02:15
Закинуть в файлы данные и запустить.
Что тут ещё можно объяснить.
Август 24th, 2010 at 20:47
rushter, а можно поподробнее, пожалуйста?
Что нужно сделать? Сохранить этот код как code.py?
Начнем с того, что у меня Винда. Стоят, также, пакеты perl и python.
urllib2 – что это?
Короче, объясни пожалуйста, от А до Я, как с нуля запустить этот скрипт и проверить 20k ссылок.
Август 25th, 2010 at 05:19
В query.txt закинуть запросы, в ua.txt закинуть user-agent. Запустить и ждать
Про запуск python скриптов можно в гугле найти.
Август 25th, 2010 at 06:09
Я уже сам понял
А где задержку выставить? Вот это – err = 0? В мс?
И еще, как она проверяет? Сколько результатов парсит с одного запроса? А можно ли как-то индикатор добавить, а то непонятно – работает или нет.
Август 25th, 2010 at 07:53
Задержка тут не нужна, тут капчи нету.
Если охото поставить, то:
import time
time.sllep(3); # 3 секунды.
Это всего лишь пример альтернативного парсинга, поэтому доделывать до вида для обычных пользователей я не буду.
Август 25th, 2010 at 09:53