1 回答

TA贡献1906条经验 获得超3个赞
在检查[1]请求后,您可以看到以下字段是必需的:
z: 7T2RlN
user_email: USERNAME
user_password: PASSWORD
do_login: log in
allhidden[0]: dummy
您需要z从http://greyhound-data.com/login.htm 中抓取first的值,这是一个隐藏字段值:<input type="hidden" name="z" value="7T2RlN">。
import requests
from bs4 import BeautifulSoup
with requests.Session() as s:
r = s.get('http://greyhound-data.com/login.htm')
soup = BeautifulSoup(r.text, 'lxml')
z = soup.find('input', {'name': 'z'})['value']
data = {
'z': z,
'user_email': USERNAME,
'user_password': PASSWORD,
'do_login': 'log in',
'allhidden[0]': 'dummy',
}
r = s.post('http://greyhound-data.com/login.htm', data=data)
print('You are now successfully logged in.' in r.text)
# True
[1]:检查请求:
打开开发人员工具(Ctrl+ Shift+ I)
点击网络
输入登录信息并提交表格
点击
login.htm
更新代码:
import requests
from bs4 import BeautifulSoup
with requests.Session() as s:
r = s.get('http://greyhound-data.com/login.htm')
soup = BeautifulSoup(r.text, 'lxml')
data = {
'user_email': USERNAME,
'user_password': PASSWORD,
'do_login': 'log in',
}
for hidden_field in soup.find_all('input', type='hidden', value=True):
data[hidden_field['name']] = hidden_field['value']
r = s.post('http://greyhound-data.com/login.htm', data=data)
print('You are now successfully logged in.' in r.text)
添加回答
举报