我正在尝试登录本地超市的网页来进行我正在从事的网络抓取项目。不幸的是,如果没有登录我就无法访问商店,因此我需要发布一个登录请求,然后加载适当的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">
我尝试在URL的各个部分中添加/ loginExt来发布登录请求,但没有任何效果,大多数情况下我不支持请求。
我该如何解决?
首先,操作是action =“ / area-utenti / loginExt”,因此将数据提交到mywebsite.com/area-utenti/loginExt。仅添加/ loginExt不会做太多。
第二,您具有'onsubmit =“ return checkCaptchaAndLogin();”'属性,这意味着在您提交表单时,将调用checkCaptchaAndLogin函数,并且可能会覆盖Submit操作。另外,通过函数的名称,我可以猜测您必须解决验证码才能登录。
没有更多信息,很难说。