我正在尝试登录当地一家超市的网页,以获取我正在进行的一个网络抓取项目。不幸的是,我不能在没有登录的情况下访问商店,所以我需要发布一个登录请求,然后加载适当的URL来抓取BeautifulSoup。
下面是我写的代码:
import requests
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36'}
landing_URL = 'https://www.esselunga.it/area-utenti/applicationCheck?appName=esselungaEcommerce&daru=https%3A%2F%2Fwww.esselungaacasa.it%3A443%2Fecommerce%2Fnav%2Fauth%2Fsupermercato%2Fhome.html%3F&loginType=light#!/negozio/'
payload = {'gw_username': 'xxx', 'gw_password': 'yyy'}
r = requests.post(landing_URL, payload, headers=headers)
print(r.status_code)
现在,源代码中的登录行是这样的:
<form id="loginForm" action="/area-utenti/loginExt" method="post" onsubmit="return checkCaptchaAndLogin();" accept-charset="utf-8">
我尝试在网址的不同部分添加/loginExt来发布登录请求,但都不起作用,大多数时候我得到的请求都不受支持。
我该如何解决这个问题呢?
发布于 2020-01-21 04:26:13
首先,该操作是action="/area-utenti/loginExt“,因此将数据提交到mywebsite.com/area-utenti/loginExt。仅仅添加/loginExt不会有多大作用。
其次,您有'onsubmit ="return checkCaptchaAndLogin ();“属性,这意味着当您提交表单时,checkCaptchaAndLogin函数将被调用,并且可能覆盖提交操作。此外,根据函数的名称,我可以猜测您必须解决验证码才能登录。
在没有更多信息的情况下,很难说。
https://stackoverflow.com/questions/59830316
复制相似问题