from grab import Grab from django.utils.http import urlquote_plus def google_position(query, url, start=False): if start > 240: # 10 * 24 return None google_url = 'http://www.google.com/search?q=%s' % urlquote_plus(query) if start: google_url += '&start=%d' % start g = Grab() g.go(google_url) for i, r in enumerate(g.pyquery('li.g cite')): if url in r.text_content(): if start: return start + i + 1 return i + 1 if start: return google_position(query, url, start=start + 10) return google_position(query, url, start=10) def yandex_position(query, url, page=False): if page > 24: return None yandex_url = 'http://yandex.ru/yandsearch?text=%s' % urlquote_plus(query) if page: yandex_url += '?p=%d' % page g = Grab() g.go(yandex_url) for i, r in enumerate(g.pyquery('.b-body-items .b-serp-item__title-link')): if url in r.get('href'): if page: return page * 20 - 10 + i + 1 return i + 1 if page: return yandex_position(query, url, page=page + 1) return yandex_position(query, url, page=1)
19 апр. 2012 г.
Парсинг позиций в выдаче google и яндекс на python / grab
Ниже грубый, но работающий код парсинга результатов поисковой выдачи с использование python, grab. Здорово, что pyquery запросы к DOM можно выполнять прямо из grab объекта.
Подписаться на:
Комментарии к сообщению (Atom)
1 комментарий:
В grab кстати есть модуль для парсинга google: https://bitbucket.org/lorien/grab/src/9b85a5229a13/grab/tools/google.py
Это не готовый парсер. Там находятся заготовки для построения поисковог-URL, а также код парсинга HTML-кода страницы с результатами поиска.
Отправить комментарий