返回没有找到想要的信息

来源:3-20 设置状态保持session(二)

Buck_messic

2020-11-23 21:58:51

# 具体遇到的问题

# 报错信息的截图

# 相关课程内容截图

# 尝试过的解决思路和结果

# 粘贴全部相关代码,切记添加代码注释(请勿截图)

import requests
import re


class Login(object):
def __init__(self):
self.request_session =requests.session()
self.header = {
"User-Agent":"Mozilla/5.0(Windows NT 10.0; WOW64) AppleWebKit / 537.36(KHTML, like Gecko) Chrome / 59.0.3071.104 Safari / 537.36"
       }
self.csrf_value = ''

   def handle_csrf_token(self):
self.index_url = "http://flask.zhaedu.com/mall/product/list/1"
       crsf_response = self.request_session.get(url=self.index_url,headers=self.header)
csrf_search = re.compile(r'name="csrf_token" type="hidden"\svalue="(.*?)">')
self.csrf_value = csrf_search.search(crsf_response.text).group(1)
print(self.csrf_value)

def handle_login(self):
self.handle_csrf_token()
username = input('请输入用户名:')
password = input("请输入密码:")
login_url = "http://flask.zhaedu.com/accounts/login"
       data = {
'csrf_token':self.csrf_value,
'username':username,
'password':password
}
self.request_session.post(url=login_url,headers=self.header,data=data)
response =self.request_session.get(url=self.index_url,headers=self.header)
print(response.text)

if __name__ == '__main__':
flask_login = Login()
#flask_login.handle_csrf_token()
   flask_login.handle_login()

返回代码:

D:\python\python.exe "E:/python练习/爬虫练习代码/python 初探网络爬虫/handle_flask_login.py"

ImVlODE4MTcyZGFiYjA0N2ZiNWFkN2IwYWE1NzgwNjA5ZWUyMTM3Yzci.X7u-iQ.RlCx9gEKCKLpG1TWdNy_1HwZ6rE

请输入用户名:gwq3214

请输入密码:200718gwq

<!DOCTYPE html>

<html>

  <head>

    <meta charset="utf-8">

    <meta http-equiv="X-UA-Compatible" content="IE=edge">

    <meta name="viewport" content="width=device-width, initial-scale=1">

    <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->

    

<title>用户登录</title>


    <!-- Bootstrap -->

    <link href="http://flask.zhaedu.com/static/bootstrap/css/bootstrap.min.css" rel="stylesheet">

    <link href="http://flask.zhaedu.com/static/css/style.css" rel="stylesheet">


    

        

    

    <!-- HTML5 shim 和 Respond.js 是为了让 IE8 支持 HTML5 元素和媒体查询(media queries)功能 -->

    <!-- 警告:通过 file:// 协议(就是直接将 html 页面拖拽到浏览器中)访问页面时 Respond.js 不起作用 -->

    <!--[if lt IE 9]>

      <script src="https://cdn.jsdelivr.net/npm/html5shiv@3.7.3/dist/html5shiv.min.js"></script>

      <script src="https://cdn.jsdelivr.net/npm/respond.js@1.4.2/dest/respond.min.js"></script>

    <![endif]-->

  </head>

  <body>

    



    <div class="container-fluid">

      

        <div class="alert alert-danger" role="alert">请先登录</div>

      

      

    <div class="row">

        <div class="col-md-4 col-md-offset-4">

            <h3>欢迎登录后台管理系统</h3>

           <form method="post" action="/accounts/login">

            <input id="csrf_token" name="csrf_token" type="hidden" value="ImVlODE4MTcyZGFiYjA0N2ZiNWFkN2IwYWE1NzgwNjA5ZWUyMTM3Yzci.X7u-lg.ViYnEYWXD-gcADfG5h40sD9zCDU">

              <div class="form-group">

                <label for="username">用户名</label>

                <input class="form-control" id="username" name="username" placeholder="请输入用户名" type="text" value="">

              </div>

              <div class="form-group">

                <label for="password">密码</label>

                <input class="form-control" id="password" name="password" placeholder="请输入密码" type="password" value="">

              </div>

              <button type="submit" class="btn btn-default">登录</button>

               

            </form>

        </div>

    </div>



    </div>



    <!-- jQuery (Bootstrap 的所有 JavaScript 插件都依赖 jQuery,所以必须放在前边) -->

    <script src="http://flask.zhaedu.com/static/jquery/jquery.min.js"></script>

    <!-- 加载 Bootstrap 的所有 JavaScript 插件。你也可以根据需要只加载单个插件。 -->

    <script src="http://flask.zhaedu.com/static/bootstrap/js/bootstrap.min.js"></script>

    

        

    

  </body>

</html>


Process finished with exit code 0

在这里输入代码,可通过选择【代码语言】突出显示


页面找那个请求地址的代码:

<!DOCTYPE html>

<html>

  <head>

    <meta charset="utf-8">

    <meta http-equiv="X-UA-Compatible" content="IE=edge">

    <meta name="viewport" content="width=device-width, initial-scale=1">

    <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->

    

    <title>商品管理</title>


    <!-- Bootstrap -->

    <link href="http://flask.zhaedu.com/static/bootstrap/css/bootstrap.min.css" rel="stylesheet">

    <link href="http://flask.zhaedu.com/static/css/style.css" rel="stylesheet">


    

        

    

    <!-- HTML5 shim 和 Respond.js 是为了让 IE8 支持 HTML5 元素和媒体查询(media queries)功能 -->

    <!-- 警告:通过 file:// 协议(就是直接将 html 页面拖拽到浏览器中)访问页面时 Respond.js 不起作用 -->

    <!--[if lt IE 9]>

      <script src="https://cdn.jsdelivr.net/npm/html5shiv@3.7.3/dist/html5shiv.min.js"></script>

      <script src="https://cdn.jsdelivr.net/npm/respond.js@1.4.2/dest/respond.min.js"></script>

    <![endif]-->

  </head>

  <body>

    

        <nav class="navbar navbar-inverse navbar-fixed-top">

      <div class="container-fluid">

        <div class="navbar-header">

          <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">

            <span class="sr-only">Toggle navigation</span>

            <span class="icon-bar"></span>

            <span class="icon-bar"></span>

            <span class="icon-bar"></span>

          </button>

          <a class="navbar-brand" href="#">积分商城后台管理</a>

        </div>

        <div id="navbar" class="navbar-collapse collapse">

          <ul class="nav navbar-nav navbar-right">

              

            <li><a href="#">欢迎,管理员</a></li>

              

            <li><a href="#">设置</a></li>

            <li><a href="#">个人信息</a></li>

            <li><a href="/accounts/logout">退出登录</a></li>

          </ul>

          <form class="navbar-form navbar-right" action="/mall/product/list/1">

            <input type="text" class="form-control" name="name" placeholder="输入商品名称...">

              <input type="submit" class="btn btn-default" value="搜索">

          </form>

        </div>

      </div>

    </nav>

    


    <div class="container-fluid">

      

      

      <div class="row">

        <div class="col-sm-3 col-md-2 sidebar">

          

             

            <ul class="nav nav-sidebar">

    <li class="active">

        <a href="/mall/product/list/1">商品管理 <span class="sr-only">(current)</span>

        </a>

    </li>

    <li><a href="#">标签管理</a></li>

    <li><a href="/mall/product/add">新增商品</a></li>

    <li><a href="#">分类管理</a></li>

  </ul>

  <ul class="nav nav-sidebar">

    <li><a href="">用户管理</a></li>

    <li><a href="">地址管理</a></li>

  </ul>

  <ul class="nav nav-sidebar">

    <li><a href="">订单管理</a></li>

  </ul>

          

        </div>

        <div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main">

          

  <h2 class="sub-header">商品列表</h2>

  <div class="table-responsive">

    <table class="table table-striped">

      <thead>

        <tr>

          <th>#</th>

          <th>名称</th>

          <th>价格</th>

          <th>状态</th>

          <th>操作</th>

        </tr>

      </thead>

      <tbody>

        

        <tr>

          <td>6</td>

          <td>酒水专场12</td>

          <td>30</td>

          <td>11</td>

          <td>

              <!-- Single button -->

            <div class="btn-group">

              <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">

                操作 <span class="caret"></span>

              </button>

              <ul class="dropdown-menu">

                <li><a href="/mall/product/detail/3073c615-51db-40d9-a7e7-9f98220f08e8">详情</a></li>

                <li><a href="/mall/product/edit/3073c615-51db-40d9-a7e7-9f98220f08e8">修改</a></li>

                <li><a href="#" class="del-prod"

                       data-uid="/mall/product/delete/3073c615-51db-40d9-a7e7-9f98220f08e8">删除</a></li>

              </ul>

            </div>

          </td>

        </tr>

        

        <tr>

          <td>9</td>

          <td>ccccdd</td>

          <td>30</td>

          <td>11</td>

          <td>

              <!-- Single button -->

            <div class="btn-group">

              <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">

                操作 <span class="caret"></span>

              </button>

              <ul class="dropdown-menu">

                <li><a href="/mall/product/detail/4186bc28-76c2-4a23-bf0a-d1cc24c4bc70">详情</a></li>

                <li><a href="/mall/product/edit/4186bc28-76c2-4a23-bf0a-d1cc24c4bc70">修改</a></li>

                <li><a href="#" class="del-prod"

                       data-uid="/mall/product/delete/4186bc28-76c2-4a23-bf0a-d1cc24c4bc70">删除</a></li>

              </ul>

            </div>

          </td>

        </tr>

        

      </tbody>

    </table>

  </div>

 <!-- 分页 -->

 <nav aria-label="Page navigation" class="pull-right">

  总共2页;总共4条记录

 

  <ul class="pagination">

    

     <li class="disabled">

      <a href="#" aria-label="Previous">

        <span aria-hidden="true">&laquo;</span>

      </a>

    </li>

    

  

    <li><a href="/mall/product/list/1?name=">1</a></li>

  

    <li><a href="/mall/product/list/2?name=">2</a></li>

  

  

    <li>

      <a href="/mall/product/list/2?name=" aria-label="Next">

        <span aria-hidden="true">&raquo;</span>

      </a>

    </li>

  

  </ul>

</nav>


        </div>

      </div> <!-- //end div.row -->

      

    </div>



    <!-- jQuery (Bootstrap 的所有 JavaScript 插件都依赖 jQuery,所以必须放在前边) -->

    <script src="http://flask.zhaedu.com/static/jquery/jquery.min.js"></script>

    <!-- 加载 Bootstrap 的所有 JavaScript 插件。你也可以根据需要只加载单个插件。 -->

    <script src="http://flask.zhaedu.com/static/bootstrap/js/bootstrap.min.js"></script>

    

    <script>

    $('.del-prod').click(function() {

        var url = $(this).attr('data-uid');

        var tr = $(this).parents('tr');

        

        if(window.confirm('确认删除该商品吗')) {

            $.get(url, function(rest) {

                if (rest === 'ok') {

                    tr.addClass('hidden');

                    alert('删除成功')

                }else {

                    alert('删除失败')

                }

            })

        }

    })

    </script>


  </body>

</html>


headers:

    1. Request URL:

      http://flask.zhaedu.com/mall/product/list/1

    2. Request Method:

      GET

    3. Status Code:

      200 OK

    4. Remote Address:

      47.112.129.48:80

    5. Referrer Policy:

      no-referrer-when-downgrade

  1. Response Headersview source

    1. Connection:

      keep-alive

    2. Content-Length:

      6817

    3. Content-Type:

      text/html; charset=utf-8

    4. Date:

      Mon, 23 Nov 2020 13:52:51 GMT

    5. Server:

      YKWS

    6. Vary:

      Accept-Encoding

    7. Vary:

      Cookie

  2. Request Headersview source

    1. Accept:

      text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8

    2. Accept-Encoding:

      gzip, deflate

    3. Accept-Language:

      zh-CN,zh;q=0.8

    4. Cache-Control:

      max-age=0

    5. Connection:

      keep-alive

    6. Cookie:

      session=.eJwlz01qAzEMQOG7eJ2FLEuWnMsM-rFoKbQwk6xK755AD_Dge7_tqHNfH-3-OJ_71o7PbPc20oys7zIFwGWOGBmxBHSakBUKEygTO1Ro1xQiTapgVuNpZjCxI6LPWdy5e1er4pkuKay-xxQkFJMy7KBLRWN6Z5cV3m4trrOOx8_X_n57GGzAoAQH9AoKtiULKJUIbe2h6dBZ3t3z2uf_BLa_F3ZdPhI.X7u8gw.-ml8Yciq5E1WuQ7WOUtCNXXDcJ4

    7. Host:

      flask.zhaedu.com

    8. Referer:

      http://flask.zhaedu.com/

    9. Upgrade-Insecure-Requests:

      1

    10. User-Agent:

      Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.104 Safari/537.36


写回答

1回答

时间,

2020-11-24

同学,你好,同学说的想要的信息是什么?运行同学的代码是可以得到结果的。

现在商品列表显示的与视频中是不一样的,同学可以在浏览器中登录后查看所存在的商品,通过代码获得数据后,看是否有对应的内容即可。

http://img.mukewang.com/climg/5fbc67c7092111d511770199.jpg

0

0 学习 · 1672 问题

查看课程