Сканирование социальной сети в python

Я хотел бы написать скрипт Python для обхода веб-сайта социальной сети. Целью сценария должно быть получение части социального графа (отношения дружбы).

Веб-сайт не предоставляет никакого API.

Проблема в том, как я могу просканировать веб-сайт на python, который притворяется сеансом входа в систему для доступа к страницам контактов (например, http://www.anobii.com/junemiller/friends )? Что ж, у меня есть логин\пароль, и я бы использовал его для входа и получения, но я не знаю, как использовать его для входа через python, чтобы установить сеанс для доступа к страницам. Любое предложение о модулях или методах Python?

Спасибо, Якопо.


person mellin    schedule 18.09.2010    source источник


Ответы (3)


Вы также можете использовать Scrapy, который уже обрабатывает файлы cookie и веб-сеансы.

В официальной документации есть пример того, как выполнить вход: http://doc.scrapy.org/en/stable/topics/request-response.html?highlight=request#using-formrequest-from-response-to-simulate-a-user-login

Scrapy реализован с использованием асинхронного ввода-вывода, поэтому он должен быть быстрее, чем Mechanize или twill.

person Pablo Hoffman    schedule 19.09.2010

В первую очередь следует проверить, предоставляет ли социальная сеть API для этого. Кроме того, проверьте, разрешено ли то, что вы хотите сделать, в условиях обслуживания, иначе вы рискуете быть заблокированным/забаненным.

Если API отсутствует и вам разрешено сканировать систему таким образом, рассмотрите такие инструменты, как механизировать или twill, чтобы имитировать поведение браузера/файлов cookie/сеанса и предоставить соответствующий скраб.

Кроме того, вы можете реализовать это самостоятельно, используя lxml.html, urllib2, модуль cookielib и т. д.

person Ivo van der Wijk    schedule 18.09.2010
comment
Иво, спасибо за ответ. Ну, я забыл указать, что нет API, поэтому я должен имитировать поведение браузера/куки/сеанса. - person mellin; 18.09.2010

Вам следует исследовать Mechanize. Из документации:

Программный просмотр веб-страниц с отслеживанием состояния на Python после Perl-модуля Энди Лестера WWW::Mechanize.

В качестве альтернативы вы можете создать свой собственный, используя urllib2 и другие встроенные модули Python.

Как сказал @Ivo , проверьте, есть ли на сайте API, чтобы сделать это для вас в первую очередь. Facebook, например, имеет Graph API, чтобы делать то, что вы описали.

person Manoj Govindan    schedule 18.09.2010