DarkWood
@DarkWood

Как авторизоваться при помощи requests на PHP форуме?

Здравствуйте.

Хочу для автоматизации определенных задач распарсить форум demiart.ru. Для просмотра тем там требуется авторизация. Логин и пароль у меня, конечно, есть. Пробую авторизоваться по этому уроку: https://kazuar.github.io/scraping-tutorial/

Собственно, мой код взят оттуда с минимальными изменениями:

import requests
from lxml import html

LOGIN_URL = "http://demiart.ru/forum/index.php?"
URL = "http://demiart.ru/forum/index.php?showtopic=8436"

session_requests = requests.session()

payload = {
    "UserName": USERNAME, 
    "PassWord": PASSWORD, 
    "submit": 'Войти',
}

result = session_requests.post(LOGIN_URL, data=payload, headers=dict(referer=LOGIN_URL))

result = session_requests.get(URL, headers=dict(referer=URL))
tree = html.fromstring(result.content)
theme_title = tree.xpath(".//div[@class='f_break tablefixed']")

print(theme_title)


Форум не имеет явной страницы логина - это можно сделать где угодно, потому указал в качестве таковой главную. csrf_token, упоминаемый в уроке, здесь отсутствует. Для примера хочу вытащить хотя бы название любой темы (xpath уже проверен).

В ответ получаю прежнюю страницу без авторизации. По сути у меня даже дерево элементов не получается (распечатываю tree и вижу только <Element html at 0x3b3a188>).

В сём деле совсем новичок. Возможно, нужно больше данных (например, куки)? Или нужно это как-то иначе делать?
  • Вопрос задан
  • 247 просмотров
Пригласить эксперта
Ответы на вопрос 1
dimonchik2013
@dimonchik2013
Антон Цуцанский, нехороший человек
1) используй pycurl и только pycurl - быстрее, проще, мультипоточно
2) используй www.telerik.com/fiddler для заголовков и понимания что передается

думаю, в твоем случае достаточно указать сохранение кук и все получится, но - см. п1
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
28 сент. 2021, в 23:33
200000 руб./за проект
28 сент. 2021, в 22:42
50000 руб./за проект
28 сент. 2021, в 22:34
500 руб./за проект