Найти - Пользователи
Полная версия: Парсер Яндекс wordstat. Что делать?
Начало » Web » Парсер Яндекс wordstat. Что делать?
1
mb
Уважаемое сообщество программистов python!

Мне потребовалось написать парсер сервиса Яндекса wordstat. Казалось бы, не такая это и сложная задача, но я до сих пор с ней не справился. Вот и решил обратиться к Вам за советом, как её решить. Сразу готовым кодом моё любопытство “убивать” не надо, просто подскажите, как и куда копать.

Я начал с простого GET запроса, который почему-то (?) возвращает не такой результат, как в браузере.

import urllib

params = urllib.urlencode({“cmd”: “words”, “text”: “test”, “page”: 1})
urllib.urlretrieve("http://wordstat.yandex.ru/?“ + params, ”wordstat.html")
Заранее благодарю всех, кто откликнется.
truporez
Передавайте заголовки с user-agent'ом, к примеру, explorer'а. Для более гибкой работы с запросами используйте urllib2.build_opener.
Александр Кошелев
mb
Заранее благодарю всех, кто откликнется.
Что вы хотите получить и что на самом деле получаете?
mb
Что вы хотите получить и что на самом деле получаете?
Итак, если в адресной строке браузера набрать запрос вида:
http://wordstat.yandex.ru/?cmd=words&page=1&text=test

то мы получим первую страницу статистики wordstat для ключевого слова test.

Этот же самый GET запрос представлен в моём примере на python. Результат, который присылает сервер, записывается в файл: wordstat.html

Так вот, если это файл просмотреть, то информация (таблица) статистики в нём отсутствует (и парсить нечего), все остальные маркеры ответа есть.

Возможно, чего-то в запросе от меня к серверу Яндекса не хватает и он “понимает”, что работает парсер. Это единичный запрос (капчи нет).
kirsanvi
Очень похоже что не хватает получения куки, вот пост на эту тему в жж
http://ru-python.livejournal.com/292986.html?thread=2818426
inlanger
Нужна библиотека twill. Код рабочий - для себя писал на днях.

from twill.commands import *

def browser_init():
clear_cookies() # clear cookies
agent("Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)") # set UserAgent value
go("http://kiks.yandex.ru/su/") # get wordstat cookies

def main():
browser_init()
go("http://wordstat.yandex.ru/?cmd=words&page=1&text=test")
show()

if __name__ == '__main__':
main()
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB