Форум сайта python.su
0
Здравствуйте.
Нужно в цикле запрашивать данные в таблице. Но таблицу получается найти только на первой итерации цикла. Дальше 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()
Офлайн
76
Все вроде бы работает. Выводит названия тем…
Регистрация ООО - курс молодого бойца Вопросы начинающего ИП Выход участника из общества без нотариального удостоверения сделки Продажа долей в ООО Утверждение новых форм по ООО Часто задаваемые вопросы Получение выписки из ЕГРЮЛ в г. Москве Порядок в 46 МИФНС ЛИКБЕЗ: статьи, образцы и формы документов Куплю готовый бизнес Есть ли очерёдность при выплате действительной стоимости доли при массовом выходе участников Зачет суммы в счет основного долга. Госпошлина Исключение юр. лица из ЕГРЮЛа по решению рег. органа
Отредактировано Romissevd (Окт. 1, 2019 19:07:25)
Офлайн
0
Да уже подсказали, в чем проблема. Сайт блочит частые запросы и отдает 503. Помог time.sleep в конце цикла.
Офлайн