Сайт снова возвращает страницу входа в систему при повторной очистке после успешного входа в систему после использования MechanicalSoup? - PullRequest
0 голосов
/ 25 апреля 2019

Я пытаюсь очистить некоторые данные из Twitter, используя BeautifulSoup как часть проекта.Чтобы очистить раздел «следующий», мне нужно сначала войти в систему, поэтому я попытался сделать это с помощью MechanicalSoup.Я знаю, что вход в систему прошел успешно, так как я получил электронное письмо, в котором говорилось об этом, но когда я захожу на другую страницу на том же веб-сайте для очистки данных, он снова перенаправляет меня на страницу входа.

import mechanicalsoup
browser = mechanicalsoup.StatefulBrowser(soup_config={'features': 'lxml'},
    raise_on_404=True,
    user_agent='MyBot/0.1: mysite.example.com/bot_info',)
login_page = browser.get("https://twitter.com/login")
login_form = login_page.soup.findAll("form")
login_form = login_form[2]
login_form.find("input", {"name": "session[username_or_email]"})["value"] = "puturusername"
login_form.find("input", {"name": "session[password]"})["value"] = "puturpassword"
login_response = browser.submit(login_form, login_page.url)
login_response.soup()

Это отправило меняуспешный адрес электронной почты для входа в систему, после чего я попытался:

page_stml = browser.open('https://twitter.com/MKBHD/following').text
page_soup = soup(page_html,"html.parser")
page_soup

Я получил страницу, содержащую https://twitter.com/login?redirect_after_login=%2FMKBHD%2Ffollowing&amp вместо фактической «следующей» страницы.

И если я попробую код, указанный нижевместо 'browser.open (' https://twitter.com/MKBHD/following').text':

# verify we are now logged in
page = browser.get_current_page()
print(page)
messages = page.find("div", class_="flash-messages")
if messages:
    print(messages.text)
assert page.select(".logout-form")

print(page.title.text)

# verify we remain logged in (thanks to cookies) as we browse the rest of
# the site
page3 = browser.open("https://github.com/MechanicalSoup/MechanicalSoup")
assert page3.soup.select(".logout-form”)

я получаю вывод:

----> 4 messages = page.find("div", class_="flash-messages")
AttributeError: 'NoneType' object has no attribute ‘find’

обновление: login_response.soup() дает мне следующее:

 </style>, <body>
 <noscript>
 <center>If you’re not redirected soon, please <a href="/">use this link</a>.</center>
 </noscript>
 <script nonce="O1gf092z/sXmKkH64mLOzQ==">

       document.cookie = "app_shell_visited=1;path=/;max-age=5";

       location.replace(location.href.split("#")[0]);
     </script>
 </body>, <noscript>
 <center>If you’re not redirected soon, please <a href="/">use this link</a>.</center>
 </noscript>, <center>If you’re not redirected soon, please <a href="/">use this link</a>.</center>, <a href="/">use this link</a>, <script nonce="O1gf092z/sXmKkH64mLOzQ==">

       document.cookie = "app_shell_visited=1;path=/;max-age=5";

       location.replace(location.href.split("#")[0]);
     </script>]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...