@Gadvain

Парсинг facebook, в чем ошибка?

Помогите выбрать href с facebook.
from grab import Grab

def main():
	g = Grab()
	g.go('https://www.facebook.com/login.php?login_attempt=1')
	g.doc.set_input('email', 'email')
	g.doc.set_input('pass', 'paswd')
	g.doc.submit()

	g.go('https://www.facebook.com')
	for elem in g.doc.select("//*[contains(@class, '_5pcq')]//@href"):
		print(elem)

if __name__ == '__main__':
	main()

Не выводит ровным счетом ничего.
Где я мог ошибиться?
Спасибо!
  • Вопрос задан
  • 1391 просмотр
Решения вопроса 1
@Gadvain Автор вопроса
Проблему решил, selenium + phantomjs.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@lPolar
data scientist
Ровным счетом ничего - это?
1. Почти наверняка на fb есть AJAX. Нужно проверить, какой в действительности запрос отправляется на сервер fb при авторизации. Это можно сделать в firefox через firebug, например.
2. Как выглядит код страницы в ответе на логин?
Ответ написан
@andreypaa
Вначале надо убедиться, что ответ вообще получен.

Я думаю как минимум необходимо передать кучу стандартных заголовков, тех, что отправляет браузер.
Как пример:

Accept image/png,image/*;q=0.8,*/*;q=0.5
Accept-Encoding gzip, deflate
Accept-Language ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Connection keep-alive
Cookie
DNT 1
Host mc.yandex.ru
Referer Парсинг facebook, в чем ошибка?
User-Agent Mozilla/5.0 (Windows NT 6.3; WOW64; rv:36.0) Gecko/20100101 Firefox/36.0

но бывает и этого не достаточно.

Возможно надо вначале сделать запрос к странице с формой, получить и передать также скрытые поля и т.д.
Возможно еще необходимо выполнить какой нибудь javascript код и т.п.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы