python selenium 获取接口数据。
selenium没有直接提供查询的函数,但是可以通过webdriver提供的API查询,使用的函数是Network.getResponseBody
webdriver提供的API文档:https://chromedevtools.github.io/devtools-protocol/tot/Network/
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 time caps = { '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): continue url = request.get('url') if(url == "https://s3.pstatp.com/bytecom/resource/union_web2/media/manifest.json"): # 得到requestId print(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 time caps = { '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): continue url = request.get('url') if(url == "https://s3.pstatp.com/bytecom/resource/union_web2/media/manifest.json"): # 得到requestId print(message['requestId']) # 通过requestId获取接口内容 content = driver.execute_cdp_cmd('Network.getResponseBody', {'requestId': message['requestId']}) print(content) break
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]