zoukankan      html  css  js  c++  java
  • python requests 模拟登陆网站,抓取数据

    抓取页面数据的时候,有时候我们需要登陆才可以获取页面资源,那么我们需要登陆以后才可以跳转到对应的资源页面,那么我们需要通过模拟登陆,登陆成功以后再次去抓取对应的数据。

    首先我们需要通过手动方式来登陆一下,查看一下如何请求登陆

    通过下图我们看到真正处理请求的页面是login.php,登陆成功以后跳转到index.php页面,下面我们来模拟一下。

    代码实现

    LOGIN_URL = 'http://yingxiao.chewumi.com/login.php'  #请求的URL地址
    DATA = {"username":'accountID',"passwd":'passwd'}   #登录系统的账号密码,也是我们请求数据
    
    HEADERS = { 
                'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36' #模拟登陆的浏览器  
               }
    RES = requests.post(LOGIN_URL,data=DATA,headers=HEADERS)  #模拟登陆操作
    print (RES.text) #打印返回的文本信息 

    下来我们请求其他的页面看一下效果

    RES1 = requests.get("http://yingxiao.chewumi.com/show.php?id=64621190")
    print(RES1.text)

     此时我们登陆成功再次请求其他的页面的时候,发现无法请求到对应的页面,意味到刚才的模拟登陆只对当前的操作起作用,那么如何使用下面的请求继续有效。实际过程中我们知道session过期,我们需要重新登陆,那么我们第一次登陆成功session,只对当前有效,所以我们再次登录就登陆失败,那么我们需要在session有效期内,把session保存,然后再次去请求其他的页面。

    def Get_Session(URL,DATA,HEADERS):
        '''保存登录参数'''
        ROOM_SESSION  = requests.Session()
        ROOM_SESSION.post(URL,data=DATA,headers=HEADERS)
        return ROOM_SESSION
    
    SESSION =Get_Session(LOGIN_URL,DATA,HEADERS)
    # 保存session后再次请求对应的地址
    RES2 = SESSION.get("http://yingxiao.chewumi.com/show.php?id=64621190")
    print(RES2.text)

    此时我们看到已经可以请求到对应的页面了。

  • 相关阅读:
    高度百分比生效的方法height:100%
    您可以尝试改变浏览器大小,这个元素依然是水平垂直居中的哦!
    百分比
    百分比布局
    mysql 用户管理
    lnmp安装--linux通过tar.gz源码包安装mysql
    linux内核编译,内核参数修改
    CentOS安装mplayer
    x86与x64与x86_64
    centos 关闭触摸板,触摸板点击
  • 原文地址:https://www.cnblogs.com/mengyu/p/6678532.html
Copyright © 2011-2022 走看看