0

Всем привет! Я пытаюсь спарсить темы с форума: http://liveingryffindor.forum24.ru/

Когда я пишу такой код, чтобы получить открытые темы, все работает хорошо:

from bs4 import BeautifulSoup

Адрес страницы форума

url = "http://liveingryffindor.forum24.ru/?1-2-0-00000026-000-10001-0"

Получаем HTML-код страницы форума

response = requests.get(url)

Создаем объект BeautifulSoup из HTML-кода

soup = BeautifulSoup(response.text, "html.parser")

Находим все элементы div с классом "post"

posts = soup.find_all(class_=lambda x: x in ["font3", "font1"])

with open("forum_posts.txt", "w", encoding="utf-8") as file: for post in posts: text = post.get_text() file.write(text + "\n")

Скриншот результата:

скриншот

Затем я пытаюсь получить закрытые темы с помощью своего логина и пароля:

import requests
from bs4 import BeautifulSoup

Логин и пароль на форуме

username = "****" password = "****"

Адрес страницы авторизации

login_url = "http://liveingryffindor.forum24.ru/"

Адрес страницы закрытой темы, которую необходимо спарсить

closed_topic_url = "http://liveingryffindor.forum24.ru/?1-8-0-00000008-000-0-0-1382282553"

Создаем сессию для авторизации

session = requests.Session()

Отправляем POST запрос с логином и паролем на страницу авторизации

login_data = {"nick: ": username, "pass ": password} session.post(login_url, data=login_data)

Получаем HTML-код закрытой темы

response = session.get(closed_topic_url)

Создаем объект BeautifulSoup из HTML-кода

soup = BeautifulSoup(response.text, "html.parser")

Находим все элементы div с классом "post"

posts = soup.find_all(class_=lambda x: x in ["font3", "font1"])

Сохраняем текст в файл

with open("closed_topic2.txt", "w", encoding="utf-8") as file: for post in posts: text = post.get_text() file.write(text + "\n")

Результат выходит такой:

   пароль:
  • зарегистрироваться, я новый участник
  • я забыл пароль, прошу выслать на е-майл

Текста там нет. Помогите, пожалуйста, решить проблему

1 Answers1

1

Попробовал запустить ваш код. Вот несколько нюансов.

  1. {"nick: ": username, "pass ": password} - неправильно указали данные.

Самый простой способ проверить какие данные отправляются в запросе - проверить в инструментах разработчика.

Открываем Network и вводим данные, отправляем форму. Результат: Отправленные данные

Заполняем данные правильно:

login_data = {"nick": username, "pass": password}
  1. Элементы которые вы пытаетесь найти на странице не существуют, поэтому файл либо остается пустым, либо вы получаете неверные данные.
posts = soup.find_all(class_=lambda x: x in ["font3", "font1"])
print(posts)

Вывод: []

введите сюда описание изображения

  1. Страница выполнена ужасно, неадекватное использование скриптов, кодировок и прочего. (Не пригодно для парсинга)
Alez Prog
  • 326