Форум сайта python.su
Подскажите пожалуйста почему пропадает авторизация после передачи страчки в Beautifulsoup. Я новичек в этом, но как я понимаю мы в суп просто передаем страчку для дальнейшей обработки. Код:
import re from requests_html import HTMLSession from requests.auth import HTTPBasicAuth from bs4 import BeautifulSoup as Soup s = HTMLSession() s.auth = HTTPBasicAuth("Testins", "testtest123") response = s.get('https://www.audit-it.ru/buh_otchet/7736050003_pao-gazprom') response.html.render(scrolldown=True, sleep=5) soup = Soup(response.html.raw_html, 'html.parser') def to_int(item: str): return int(val) if ( val := re.sub(r'[^\d-]|-(?!\d)|(?<!^)-', '', re.sub(r'\((.+)\)', r'-\1', item))) else None cells = list(map(to_int,[item.get_text(strip=True) for item in soup.find_all('td', class_='calcCell')])) print(len(cells)) print(cells[3])
Отредактировано BieKuf (Май 4, 2022 14:01:12)
Офлайн
какие данные нужно получить? даже для примера
Офлайн
xam1816Все элементы таблицы ('td', class_='calcCell'). Лист (список) в 1078 символов). Не понимаю почему в суп передается не авторизированная страница
какие данные нужно получить? даже для примера
Отредактировано BieKuf (Май 3, 2022 23:35:10)
Офлайн
взгляните войдет в кабинет?
import requests from bs4 import BeautifulSoup as Soup sess = requests.Session() data = {'AUTH_FORM': 'Y', 'TYPE': 'AUTH', 'USER_LOGIN': 'Samatas', 'USER_PASSWORD': 'testtest123', 'Login': "%C2%F5%EE%E4"} sess.post('https://www.audit-it.ru/my/login.php',data=data) print(sess.cookies) resp = sess.get('https://www.audit-it.ru/buh_otchet/7736050003_pao-gazprom') html = resp.text soup = Soup(html, 'html.parser') print(soup)
import re import requests from bs4 import BeautifulSoup as Soup sess = requests.Session() data = {'AUTH_FORM': 'Y', 'TYPE': 'AUTH', 'USER_LOGIN': 'Samatas', 'USER_PASSWORD': 'testtest123', 'Login': "%C2%F5%EE%E4"} sess.post('https://www.audit-it.ru/my/login.php',data=data) resp = sess.get('https://www.audit-it.ru/buh_otchet/7736050003_pao-gazprom') html = resp.text soup = Soup(html, 'html.parser') def to_int(item: str): return int(val) if ( val := re.sub(r'[^\d-]|-(?!\d)|(?<!^)-', '', re.sub(r'\((.+)\)', r'-\1', item))) else None cells = list(map(to_int,[item.get_text(strip=True) for item in soup.find_all('td', class_='calcCell')])) print(len(cells)) print(cells[3])
219
1140
Отредактировано xam1816 (Май 4, 2022 00:09:43)
Офлайн
xam1816Да, входит. Но дальше непонятно как записать все в лист)
взгляните войдет в кабинет?
Офлайн
xam1816Выводит так 219 элементов, не подгружает табличку. А если первый код доработать, то элемента ‘17 102 648’ нету в списке. Вообще не понимаю почему не передает авторизированную страницу. В cell должно быть значение ‘17102648’
вот с вашим кодом
Отредактировано BieKuf (Май 4, 2022 00:17:48)
Офлайн