Найти - Пользователи
Полная версия: Python. Почему пропадает авторизация после передачи сайта в Beautifulsoup
Начало » Python для новичков » Python. Почему пропадает авторизация после передачи сайта в Beautifulsoup
1
BieKuf
Подскажите пожалуйста почему пропадает авторизация после передачи страчки в 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])
На указанном аккаунте есть активная подписка. Если я печатаю содержимое response - элементы ‘hidden’ отсутствуют, подписка есть и все элементы отображаются. После передачи в суп почему-то все пропадает. Печатаю содержимое супа - присутствует скрытые ('hidden') элементы. Ну и соответственно например скрытый без подписки элемент (для примера 3й) не печатается.
xam1816
какие данные нужно получить? даже для примера
BieKuf
xam1816
какие данные нужно получить? даже для примера
Все элементы таблицы ('td', class_='calcCell'). Лист (список) в 1078 символов). Не понимаю почему в суп передается не авторизированная страница
Пример
xam1816
взгляните войдет в кабинет?
  
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
BieKuf
xam1816
взгляните войдет в кабинет?
Да, входит. Но дальше непонятно как записать все в лист)
BieKuf
xam1816
вот с вашим кодом
Выводит так 219 элементов, не подгружает табличку. А если первый код доработать, то элемента ‘17 102 648’ нету в списке. Вообще не понимаю почему не передает авторизированную страницу. В cell должно быть значение ‘17102648’
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB