Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 1, 2019 15:06:02

barbiturat
Зарегистрирован: 2019-09-22
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Почему BeautifulSoup в цикле не может найти таблицу?

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

Нужно в цикле запрашивать данные в таблице. Но таблицу получается найти только на первой итерации цикла. Дальше bs ее не видит. В консоли если просто передать в requests урл страницы пагинации любой - все парсится.

 import requests
from bs4 import BeautifulSoup
import re
def get_html(url):
    ua = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36'
    r = requests.get(url, headers={'User-Agent': ua})
    return r.text
def main():
    base_url = 'https://forum.zakonia.ru/forumdisplay.php?f=64'
    html = get_html(base_url)
    soup = BeautifulSoup(html, 'lxml')
    # Получаем кол-во страниц пагинации
    pages_count = int(soup.find('div', id='forumContent').find('form').find_all('table')[0].find('table').find_all('tr')[0].find_all('td')[0].text.split()[-1])
    for i in range(1, pages_count):
        url_page = base_url + '&page=%s' % i
        html = get_html(url_page)
        soup = BeautifulSoup(html, 'lxml')
        trs_pattern = 'threadbits_forum_'
        table = soup.find('table', id='threadslist') # Здесь таблицу получаем только на первой итерации цикла, дальше она None
        trs = table.find('tbody', id=re.compile(trs_pattern)).find_all('tr')
        for tr in trs:
            pattern = 'showthread'
            question = tr.find_all('td')[2].find('div').find('a', href=re.compile(pattern)).text
            print(question)
if __name__ == '__main__':
    main()

Офлайн

#2 Окт. 1, 2019 19:07:03

Romissevd
От: Счастье
Зарегистрирован: 2015-03-01
Сообщения: 533
Репутация: +  76  -
Профиль   Отправить e-mail  

Почему BeautifulSoup в цикле не может найти таблицу?

Все вроде бы работает. Выводит названия тем…

 Регистрация ООО - курс молодого бойца
Вопросы начинающего ИП
Выход участника из общества без нотариального удостоверения сделки
Продажа долей в ООО
Утверждение новых форм по ООО
Часто задаваемые вопросы
Получение выписки из ЕГРЮЛ в г. Москве
Порядок в 46 МИФНС
ЛИКБЕЗ: статьи, образцы и формы документов
Куплю готовый бизнес
Есть ли очерёдность при выплате действительной стоимости доли при массовом выходе участников
Зачет суммы в счет основного долга. Госпошлина
Исключение юр. лица из ЕГРЮЛа по решению рег. органа

Отредактировано Romissevd (Окт. 1, 2019 19:07:25)

Офлайн

#3 Окт. 1, 2019 19:16:11

barbiturat
Зарегистрирован: 2019-09-22
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Почему BeautifulSoup в цикле не может найти таблицу?

Да уже подсказали, в чем проблема. Сайт блочит частые запросы и отдает 503. Помог time.sleep в конце цикла.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version