为了账号安全,请及时绑定邮箱和手机立即绑定

登录网站的问题

登录网站的问题

慕标5832272 2021-12-16 14:59:24
我正在尝试构建一个登录网页的小脚本,然后从那里我可以做其他事情。获取未经身份验证的页面没有问题,但是当我尝试“登录”时,它似乎没有发布页面。我不确定是否是没有表单操作的问题,并且此页面上还有另一个隐藏的表单。当我尝试我的代码时,返回的 html 会使用我提供的用户/密码填写字段。就好像没有按下“登录”按钮一样。这是表格:<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 loginresult = s.post(LOGIN_URL, data={    "user_email": USERNAME,     "user_password": PASSWORD, })# Scrape urlhtml = s.get(DASHBOARD_URL).contentprint(html)soup = BeautifulSoup(html, "html.parser")尝试过代码的变体,但知道上述在正常页面上有效。我还需要传递其他内容或启动提交按钮吗?谢谢你的帮助!
查看完整描述

1 回答

?
一只名叫tom的猫

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]:检查请求:

  1. 打开开发人员工具(CtrlShiftI

  2. 点击网络

  3. 输入登录信息并提交表格

  4. 点击 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)


查看完整回答
反对 回复 2021-12-16
  • 1 回答
  • 0 关注
  • 199 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号