ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

40.项目案例之利用爬虫技术获取需要帐号密码登录的网页中的数据

2020-06-09 16:56:39  阅读:267  来源: 互联网

标签:__ 登录 get url self 爬虫 40 headers 帐号密码


近期公司需要开发一个能够读取设备内部网页信息,我想到了用爬虫的方法来获取相关数据,具体代码如下:

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
import requests
import time


class GetData():
    # 初始化变量
    def __init__(self, url):
        self.url = url
        # 要用帐号密码登录,首先需要在先通过浏览器登录网页,然后在浏览器中查看Cookie值,将其放在请求头中
        self.headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:77.0) Gecko/20100101 Firefox/77.0",
            "Cookie": "user_choose=block"
        }
        self.login()    # 首先先用Session方法来登录网页
        self.get_data() # 登录完成后,我们就可以去登录里面其它的网址了

    # 登录主页,将Cookie写入session对象中
    def login(self):
        self.session = requests.Session()
        response = self.session.get(self.url, headers=self.headers)

    # 用session对象的post来获取Ajax接口数据
    def get_data(self):
        get_url = "http://192.168.1.12/boafrm/formCpReportMonitor"
        resp = self.session.post(get_url, headers=self.headers)
        text = resp.text
        return text


if __name__ == '__main__':
    while True:
        main_url = 'http://192.168.1.12/index/index.htm'
        data = GetData(main_url)
        print('-'*50)
        print(data.get_data())
        time.sleep(1)

要完成上面程序正常运行:

1.首先,我们需要用帐号密码来完成正常的登录操作,登录完成后在浏览器中找到Cookie信息:

 

 2.然后,然后将该cookie信息放在程序的请求头headers中:

 

 3.由于我们登录的网站是用GET请求的,所以我们代码中也需要用get请求,并且首次请求时,我们需要带请求头访问,所以我们用requests.Session()中的get来访问。

 

 4.最后,由于我发现需要获取的数据是动态实时数据,所以是用了Ajax,那我就找那个利用Ajax技术的网址接口,我是这要查找的,用浏览器中的箭头工具在网页中查找对应的超链接文本,然后在下面的代码中会定位到相应的代码,在该代码中就可以找到对应的网页,然后打开该网页,再按F12,在浏览器下面的工具中可以看到实时刷新的网址,此时,我们点击最下面的一个,然后看右侧的请求头,

 

 

 

 按以上方法就能正确抓取到需要的数据了。

如有问题可以添加如下公众号进行交流。

标签:__,登录,get,url,self,爬虫,40,headers,帐号密码
来源: https://www.cnblogs.com/ubuntu1987/p/13073621.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有