Анализ Google SERP на Python
Хотел написать для начала, что нибудь вроде “Выдача гугла – бесценный источник информации”, ну да ладно, все мы знаем зачем вебмастеру понадобилось вдруг анализировать топы гугла по спискам кейвордов или хуже того парсить урлы/отслеживать позиции сайтов =) вообщем предельно ясно, что задача анализа результатов выдачи возникает часто и найти применение результатам не проблема. Сложность только в том, что нужно писать код, причем желательно быстро и с минимальными усилиями. Помимо самих SERP было бы неплохо узнать и ключевые параметры – PR (PageRank) и Index, полезная информация, я гарантирую. Некоторое время назад, я кодил на PHP, потом бросил, бесит отсутствие строгой типизации (и потоков, да и тем кто с детства привык к красоте и логичности кода на Object Pascal/C++ пхп должен быть глубоко противен), еще и что-нибудь вроде WAMP/XAMPP поднимать на локальном компе. Python ничуть не хуже все к чему привыкли на PHP есть и на Python.
Для желающих приобщиться доступен Complete and Ready-to-Install industry standard Python distribution – после установки можно сразу приступать к работе, именно в таком виде должен поставляться язык программирования.
Итак для начала нужно получить данные от гугла, можно попробовать делать это через curl/liburl, но это hard-style, если погуглить можно легко найти уже готовые решения. Я уже озаботился в свое время поиском библиотеки, поэтому сразу даю линк на пост автора – Python Library for Google Search, с примерами и описанием. Библиотека избавляет вас от деталей предоставляя интерфейс позволяющий легко и изящьно работать с выдачей. Просто закиньте содержимое архива в Python\Lib или в папку где находиться ваша программа.
Код шлет запрос к гуглу и выводит в окно Python Shell результаты, обратите внимание на конструкцию try/except – позволит избежать остановки программы в случае ошибки :
from xgoogle.search import GoogleSearch, SearchError
try:
gs = GoogleSearch("hot black chicks", random_agent=True)
gs.results_per_page = 10
results = gs.get_results()
for res in results:
print res.title.encode('utf8')
print res.desc.encode('utf8')
print res.url.encode('utf8')
print
except SearchError, e:
print "Search failed: %s" % e
Количество страниц в индексе гугла для домена определим сформировав запрос вида “site:site_url” и поглядев на кол-во результатов :
def GetGoogleIndex(self, url):
request = 'site:' + url
index = 0
try:
gs = GoogleSearch(request)
gs.results_per_page = 10
results = gs.get_results()
index = gs.num_results
except SearchError, e:
index = -1
print "Search Failed : %s" % e
finally:
print "Index: %d\tURL: %s" % (int(index), url)
return index
С определением PR все непросто, но это не важно, т.к. в интернете несложно найти уже готовый код :
Google PR checker Python code
Результаты можно писать в файлы/базу данных SQL/SQLite, но лучше естественно в базу, проще будет делать выборки. Готовый и отлаженный код без проблем переносится на сервер, при желании реализуется многопоточность, но в этом случае скорее всего придеться дрочить гугл через прокси (код библиотеки открыт, как включить прокси смотреть тут и тут)



