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


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

    #!/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,在浏览器下面的工具中可以看到实时刷新的网址,此时,我们点击最下面的一个,然后看右侧的请求头,

     

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

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

  • 相关阅读:
    Windows Azure 网站开发Stacks支持
    AzureDev 社区活动获奖者公布
    Android 改变窗口标题栏的布局
    cocos2d-x游戏开发系列教程-超级玛丽01-前言
    cocos2dx进阶学习之CCObject
    基于visual Studio2013解决算法导论之055拓扑排序
    查看某文件夹内文件大小
    vmstat命令
    uname 命令
    iostat命令
  • 原文地址:https://www.cnblogs.com/ubuntu1987/p/13073621.html
Copyright © 2020-2023  润新知