首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >503使用Python MechanicalSoup登录时出错

503使用Python MechanicalSoup登录时出错
EN

Stack Overflow用户
提问于 2018-01-09 02:15:12
回答 2查看 961关注 0票数 0

我想抓取登录页面后面的一些信息,但我得到了503

这就是我尝试用mechanicalsoup登录时发生的事情(和机器人浏览器的结果一样):

代码语言:javascript
复制
>>> import mechanicalsoup
>>> browser = mechanicalsoup.StatefulBrowser(user_agent='Mozilla/5.0')
>>> page = browser.get('https://X.com')
>>> page.status_code
200
>>> page = browser.get('https://X.com/wp-login.php')
>>> page.status_code
503

我已经尝试了几种不同的user_agents,我怎么才能避免这个问题呢?到处移动饼干?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-09 06:54:19

好的,我用https://github.com/Anorov/cloudflare-scrape做到了这一点。

代码语言:javascript
复制
import cfscrape
from bs4 import BeautifulSoup

# log in
scraper = cfscrape.CloudflareScraper()
scraper.get('https://X.com/wp-login.php')
tokens = cfscrape.get_tokens('https://X.com')
browser = mechanicalsoup.StatefulBrowser(session=scraper, user_agent=tokens[1])
browser.select_form('#loginform')
browser['log'] = 'X'
browser['pwd'] = 'X'
browser.submit_selected()
browser.open('https://X.com/page/')
票数 5
EN

Stack Overflow用户

发布于 2018-01-09 02:42:42

它受到CloudFlare的保护,它拒绝对该URL的纯GET请求。您需要一个非headless浏览器才能访问该页面,否则它将拒绝该页面。使用提供图形用户界面的库,比如Selenium,就可以了。

代码语言:javascript
复制
from selenium import webdriver
browser = webdriver.Firefox() # or whichever browser you prefer
browser.get('https://hacked.com/wp-login.php')

请注意,使用Selenium无法获取状态代码。但是,您可以通过更多方式与页面进行交互,并确认您已到达该页面。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48155877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档