登录网站的问题
Issues Logging into Site
我正在尝试构建一个登录网页的小脚本,然后我可以从那里做其他事情。
我在获取未经验证的页面时没有问题,但是当我尝试 "login" 时,它似乎没有发布该页面。不知道是不是没有表单操作的问题,而且这个页面还有一个隐藏的表单。
当我尝试我的代码时,返回的 html 字段中填写了我提供的 user/pass。好像 "Log In" 按钮没有被按下。
表格如下:
<form method="POST">
<table border=1 bgcolor="#a7a7a7" style="border-collapse:collapse;border-style:solid; border-color:#006600" >
<tr>
<td>
<table cellspacing=2 cellpadding=4>
<tr>
<td align="right" bgcolor="#b7b7b7" >your email</td>
<td bgcolor="#c7c7c7" ><input name="user_email" type="text" size=30 value=""><br></td>
</tr>
<tr>
<td align="right" bgcolor="#b7b7b7" >your password</td>
<td bgcolor="#c7c7c7" ><input name="user_password" type="password" size=30><br></td>
</tr>
<tr>
<td align="center" colspan=2><input type="submit" name="do_login" value="log in"></td>
</tr>
</table>
</td>
</tr>
</table>
<input type="hidden" name="allhidden[0]" value="dummy">
<input type="hidden" name="allhidden[_ga]" value="1234">
<input type="hidden" name="allhidden[_gid]" value="1234">
<input type="hidden" name="allhidden[gd_session]" value="eFmcHb">
<input type="hidden" name="allhidden[grey_cookie]" value="&&&">
<br>
</form>
这是我的代码:
s = requests.Session()
# Perform login
result = s.post(LOGIN_URL, data={
"user_email": USERNAME,
"user_password": PASSWORD,
})
# Scrape url
html = s.get(DASHBOARD_URL).content
print(html)
soup = BeautifulSoup(html, "html.parser")
尝试了各种代码,但知道上面的代码适用于普通页面。我还需要传递其他信息或启动提交按钮吗?
感谢您的帮助!
检查[1]请求后,您可以看到需要以下字段:
z: 7T2RlN
user_email: USERNAME
user_password: PASSWORD
do_login: log in
allhidden[0]: dummy
需要先从http://greyhound-data.com/login.htm中抓取z
的值,这是一个隐藏字段值:<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)
我正在尝试构建一个登录网页的小脚本,然后我可以从那里做其他事情。
我在获取未经验证的页面时没有问题,但是当我尝试 "login" 时,它似乎没有发布该页面。不知道是不是没有表单操作的问题,而且这个页面还有一个隐藏的表单。
当我尝试我的代码时,返回的 html 字段中填写了我提供的 user/pass。好像 "Log In" 按钮没有被按下。
表格如下:
<form method="POST">
<table border=1 bgcolor="#a7a7a7" style="border-collapse:collapse;border-style:solid; border-color:#006600" >
<tr>
<td>
<table cellspacing=2 cellpadding=4>
<tr>
<td align="right" bgcolor="#b7b7b7" >your email</td>
<td bgcolor="#c7c7c7" ><input name="user_email" type="text" size=30 value=""><br></td>
</tr>
<tr>
<td align="right" bgcolor="#b7b7b7" >your password</td>
<td bgcolor="#c7c7c7" ><input name="user_password" type="password" size=30><br></td>
</tr>
<tr>
<td align="center" colspan=2><input type="submit" name="do_login" value="log in"></td>
</tr>
</table>
</td>
</tr>
</table>
<input type="hidden" name="allhidden[0]" value="dummy">
<input type="hidden" name="allhidden[_ga]" value="1234">
<input type="hidden" name="allhidden[_gid]" value="1234">
<input type="hidden" name="allhidden[gd_session]" value="eFmcHb">
<input type="hidden" name="allhidden[grey_cookie]" value="&&&">
<br>
</form>
这是我的代码:
s = requests.Session()
# Perform login
result = s.post(LOGIN_URL, data={
"user_email": USERNAME,
"user_password": PASSWORD,
})
# Scrape url
html = s.get(DASHBOARD_URL).content
print(html)
soup = BeautifulSoup(html, "html.parser")
尝试了各种代码,但知道上面的代码适用于普通页面。我还需要传递其他信息或启动提交按钮吗?
感谢您的帮助!
检查[1]请求后,您可以看到需要以下字段:
z: 7T2RlN
user_email: USERNAME
user_password: PASSWORD
do_login: log in
allhidden[0]: dummy
需要先从http://greyhound-data.com/login.htm中抓取z
的值,这是一个隐藏字段值:<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)