python selenium 获取接口数据。

selenium没有直接提供查询的函数,但是可以通过webdriver提供的API查询,使用的函数是Network.getResponseBody

webdriver提供的API文档:Chrome DevTools Protocol - Network domain

Network.getResponseBody文档说明:

Network.getResponseBody的参数是requestid,requestid是webdriver每个请求自动生成的惟一ID,拿到requestid就能拿到请求返回的内容。

如何获取requestid?创建webdriver对象时配置信息设置获取performance,即可获取每个请求的日志信息,然后通过对日志信息的检索找到对应的requestid。

获取日志信息的webdriver创建代码(注意,必须传入配置信息才能获取日志信息):

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
import timecaps = {'browserName': 'chrome','loggingPrefs': {'browser': 'ALL','driver': 'ALL','performance': 'ALL',},'goog:chromeOptions': {'perfLoggingPrefs': {'enableNetwork': True,},'w3c': False, },
}
driver = webdriver.Chrome(desired_capabilities=caps)driver.get('https://partner.oceanengine.com/union/media/login/')
# 必须等待一定的时间,不然会报错提示获取不到日志信息,因为絮叨等所有请求结束才能获取日志信息
time.sleep(3)request_log = driver.get_log('performance')

打印request_log是一个数组,然后遍历request_log检索需要获取的url对应的requestid,比如需要获取https://s3.pstatp.com/bytecom/resource/union_web2/media/manifest.json对应的requestid,并且获取接口内容:

for i in range(len(request_log)):message = json.loads(request_log[i]['message'])message = message['message']['params']# .get() 方式获取是了避免字段不存在时报错request = message.get('request')if(request is None):continueurl = request.get('url')if(url == "https://s3.pstatp.com/bytecom/resource/union_web2/media/manifest.json"):# 得到requestIdprint(message['requestId'])# 通过requestId获取接口内容content = driver.execute_cdp_cmd('Network.getResponseBody', {'requestId': message['requestId']})print(content)break

完整代码:

import json
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
import timecaps = {'browserName': 'chrome','loggingPrefs': {'browser': 'ALL','driver': 'ALL','performance': 'ALL',},'goog:chromeOptions': {'perfLoggingPrefs': {'enableNetwork': True,},'w3c': False, },
}
driver = webdriver.Chrome(desired_capabilities=caps)driver.get('https://partner.oceanengine.com/union/media/login/')
# 必须等待一定的时间,不然会报错提示获取不到日志信息,因为絮叨等所有请求结束才能获取日志信息
time.sleep(3)request_log = driver.get_log('performance')
print(request_log)for i in range(len(request_log)):message = json.loads(request_log[i]['message'])message = message['message']['params']# .get() 方式获取是了避免字段不存在时报错request = message.get('request')if(request is None):continueurl = request.get('url')if(url == "https://s3.pstatp.com/bytecom/resource/union_web2/media/manifest.json"):# 得到requestIdprint(message['requestId'])# 通过requestId获取接口内容content = driver.execute_cdp_cmd('Network.getResponseBody', {'requestId': message['requestId']})print(content)break

如果是不创建新浏览器窗口,直接在已打开的浏览器,则代码需要修改为:

caps = DesiredCapabilities.CHROME
caps['loggingPrefs'] = {'performance': 'ALL'}options = webdriver.ChromeOptions()
options.add_experimental_option('w3c', False)
options.add_experimental_option("debuggerAddress", "127.0.0.1:9527")
driver = webdriver.Chrome(options=options, desired_capabilities=caps)

python selenium 获取接口数据相关推荐

  1. Selenium UI 自动化获取接口数据

    Selenium UI 自动化获取接口数据 1.前端向接口的传参: 2.捕获到接口返回的内容后,判断前端是否有按照接口返回的内容进行展示 针对第一点,我上家公司是做旅游的,旅客预订完人数.房间数后前端 ...

  2. Python 获取接口数据,解析JSON,写入文件

    Python 获取接口数据,解析JSON,写入文件 用于练手的例子,从国家气象局接口上获取JSON数据,将它写入文件中,并解析JSON: 总的来说,在代码量上,python代码量要比java少很多.而 ...

  3. python Chrome + selenium自动化测试与python爬虫获取网页数据

    一.使用Python+selenium+Chrome 报错: selenium.common.exceptions.SessionNotCreatedException: Message: sessi ...

  4. 用selenium获取土地交易数据并用百度智慧云API图片转文字

    用selenium获取土地交易数据并用百度智慧云API图片转文字 1.数据获取 1.1 分析网页结构 1.2 selenium的坑 1.3 获取所有网页的标题和链接 1)selenium查找链接 2) ...

  5. python爬虫获取基金数据2

    用sklearn分析基金数据<1> python爬虫获取基金数据<2> 数据预处理:数据清洗.生成样本数据<3> 用sklearn训练样本数据<4> 用 ...

  6. python金融数据怎么获取_class类怎样在python中获取金融数据?

    我们搜集金融数据,通常想要的是利用爬虫的方法.其实我们最近所学的class不仅可以进行类调用,在获取数据方面同样是可行的,很多小伙伴都比较关注理财方面的情况,对金融数据的需要也是比较多的.下面就cla ...

  7. python如何收集数据的方法有哪些_class类在python中获取金融数据的实例方法

    我们搜集金融数据,通常想要的是利用爬虫的方法.其实我们最近所学的class不仅可以进行类调用,在获取数据方面同样是可行的,很多小伙伴都比较关注理财方面的情况,对金融数据的需要也是比较多的.下面就cla ...

  8. 用Python来获取DICOM数据TAG信息

    用Python来获取DICOM数据TAG信息 单刀直入 1 数据读进来 2 调函数 3 调万能函数 其他 by 今天不飞了 单刀直入 今天我也来个言简意赅,上代码 1 数据读进来 # import一波 ...

  9. 【Python】使用Python轻松获取股票基金数据

    最近这一两年,股市欣欣向荣,原来一直无法挣脱3000点魔咒的上证指数,现在一路高歌,踏进了3500点. 我身边有不少人,靠股票.基金赚了一波,这得益于大行情,当然也有人亏了钱. 普通人炒股,其实大概率 ...

  10. 使用python+selenium获取网易云指定歌曲评论

    使用selenium获取网易云指定歌曲评论 最近一段时间在学习python爬虫,结合自己学习的内容写一个简单爬虫来获取网易云音乐中指定歌曲的评论信息.第一次发博客并且也是入门爬虫不久,有问题的地方希望 ...

最新文章

  1. asiox 多个baseurl_vue添加axios,并且指定baseurl
  2. 【Network Security!】DOS基本命令与批处理(看不懂来打我)
  3. 如何反映两条曲线的拟合精度_【隆旅干货分享】差压传感器的应用及精度特性分析...
  4. java实现插入排序 1
  5. 如何在windows下安装Python(Python入门教程)
  6. 基于OpencCV的彩色图像的分离与合并
  7. TensorFlow神经网络(六)制作数据集,实现特定应用
  8. 挑战《IT我最大》Windows 7由你秀 活动的丑恶行径
  9. SGU 176 Flow construction(有上下限的最小流)
  10. 缺页异常(Page Faults) 和 Kernel Oops打印调用流程
  11. poi处理office转pdf
  12. wordpress插件_顶级WordPress反垃圾邮件插件
  13. 2054339-01-2,N-Boc-N-bis(PEG2-acid)它可以在活化剂(如EDC或HATU)存在下与伯氨基反应
  14. 地球人来源3-仙女座人接触者 Alex Collier爬虫族议程访谈
  15. [数学] Lucas定理模板
  16. java批量去除pdf签名,删除签名图标
  17. IT知识百科:什么是暴力破解?
  18. 二手机械硬盘+硬盘盒组成移动机械硬盘【小记】
  19. 树莓派 3B+ 使用微雪2-CH CAN FD HAT
  20. 了解网络攻击:类型、策略和技术

热门文章

  1. python同时执行多个py文件_【经验分享】如何同时运行多个python脚本
  2. Node.js:中间件——配置静态资源中间件
  3. Node.js:封装Node通用web容器
  4. 实战Python:利用Python和PyQt5实现天气查询小系统
  5. 会安装oracle数据库吗,搭建安装oracle数据库
  6. http://snaps.php.net,科技常识:Windows下编译PHP和memcache扩展教程
  7. java实现多线程断点续传,上传下载
  8. 从零开始搭二维激光SLAM --- Karto的后端优化与回环检测的实现解读
  9. GMapping源码分析之随手笔记
  10. 强化学习中的各类算法