欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python selenium 獲取接口數(shù)據(jù)的實(shí)現(xiàn)

 更新時(shí)間:2020年12月07日 14:30:16   作者:CyborgLin  
這篇文章主要介紹了python selenium 獲取接口數(shù)據(jù)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

python selenium 獲取接口數(shù)據(jù)。

selenium沒有直接提供查詢的函數(shù),但是可以通過webdriver提供的API查詢,使用的函數(shù)是Network.getResponseBody

webdriver提供的API文檔:https://chromedevtools.github.io/devtools-protocol/tot/Network/

Network.getResponseBody文檔說明:

Network.getResponseBody的參數(shù)是requestid,requestid是webdriver每個(gè)請(qǐng)求自動(dòng)生成的惟一ID,拿到requestid就能拿到請(qǐng)求返回的內(nèi)容。

如何獲取requestid?創(chuàng)建webdriver對(duì)象時(shí)配置信息設(shè)置獲取performance,即可獲取每個(gè)請(qǐng)求的日志信息,然后通過對(duì)日志信息的檢索找到對(duì)應(yīng)的requestid。

獲取日志信息的webdriver創(chuàng)建代碼(注意,必須傳入配置信息才能獲取日志信息):

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/')
# 必須等待一定的時(shí)間,不然會(huì)報(bào)錯(cuò)提示獲取不到日志信息,因?yàn)樾踹兜人姓?qǐng)求結(jié)束才能獲取日志信息
time.sleep(3)
 
request_log = driver.get_log('performance')

打印request_log是一個(gè)數(shù)組,然后遍歷request_log檢索需要獲取的url對(duì)應(yīng)的requestid,比如需要獲取https://s3.pstatp.com/bytecom/resource/union_web2/media/manifest.json對(duì)應(yīng)的requestid,并且獲取接口內(nèi)容:

for i in range(len(request_log)):
  message = json.loads(request_log[i]['message'])
  message = message['message']['params']
  # .get() 方式獲取是了避免字段不存在時(shí)報(bào)錯(cuò)
  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獲取接口內(nèi)容
    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/')
# 必須等待一定的時(shí)間,不然會(huì)報(bào)錯(cuò)提示獲取不到日志信息,因?yàn)樾踹兜人姓?qǐng)求結(jié)束才能獲取日志信息
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() 方式獲取是了避免字段不存在時(shí)報(bào)錯(cuò)
  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獲取接口內(nèi)容
    content = driver.execute_cdp_cmd('Network.getResponseBody', {'requestId': message['requestId']})
    print(content)
    break

到此這篇關(guān)于python selenium 獲取接口數(shù)據(jù)的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)python selenium 獲取接口數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python日志記錄模塊實(shí)例及改進(jìn)

    python日志記錄模塊實(shí)例及改進(jìn)

    許多應(yīng)用程序中都會(huì)有日志模塊,用于記錄系統(tǒng)在運(yùn)行過程中的一些關(guān)鍵信息,以便于對(duì)系統(tǒng)的運(yùn)行狀況進(jìn)行跟蹤。在python中,我們不需要第三方的日志組件,因?yàn)樗呀?jīng)為我們提供了簡(jiǎn)單易用、且功能強(qiáng)大的日志模塊:logging。
    2017-02-02
  • python映射列表實(shí)例分析

    python映射列表實(shí)例分析

    這篇文章主要介紹了python映射列表,實(shí)例分析了python映射列表遍歷計(jì)算其中每一個(gè)元素的使用技巧,需要的朋友可以參考下
    2015-01-01
  • python QT界面關(guān)閉線程池的線程跟隨退出完美解決方案

    python QT界面關(guān)閉線程池的線程跟隨退出完美解決方案

    這篇文章主要介紹了python QT界面關(guān)閉,線程池的線程跟隨退出解決思路方法,本文給大家分享兩種方法結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-11-11
  • pytorch進(jìn)行上采樣的種類實(shí)例

    pytorch進(jìn)行上采樣的種類實(shí)例

    今天小編就為大家分享一篇pytorch進(jìn)行上采樣的種類實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • 淺談Python小波分析庫Pywavelets的一點(diǎn)使用心得

    淺談Python小波分析庫Pywavelets的一點(diǎn)使用心得

    這篇文章主要介紹了淺談Python小波分析庫Pywavelets的一點(diǎn)使用心得,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Python3 單行多行萬能正則匹配方法

    Python3 單行多行萬能正則匹配方法

    今天小編就為大家分享一篇Python3 單行多行萬能正則匹配方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Python數(shù)據(jù)分析庫PyGWalker的強(qiáng)大交互式功能界面探索

    Python數(shù)據(jù)分析庫PyGWalker的強(qiáng)大交互式功能界面探索

    這篇文章主要介紹了Python數(shù)據(jù)分析庫PyGWalker的強(qiáng)大交互式功能界面探索有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • Python過濾序列元素的方法

    Python過濾序列元素的方法

    這篇文章主要介紹了Python過濾序列元素的方法,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • 全面掌握Python?JSON庫函數(shù)與方法學(xué)會(huì)JSON數(shù)據(jù)處理

    全面掌握Python?JSON庫函數(shù)與方法學(xué)會(huì)JSON數(shù)據(jù)處理

    Python提供了內(nèi)置的JSON庫,允許在Python中解析和序列化JSON數(shù)據(jù),本文將深入研究Python中JSON庫的各種函數(shù)和方法,為你提供豐富的示例代碼來幫助掌握J(rèn)SON處理的方方面面
    2024-01-01
  • 詳解Python中with語句的用法

    詳解Python中with語句的用法

    這篇文章主要介紹了Python中with語句的用法,with語句的使用是Python學(xué)習(xí)過程當(dāng)中的基礎(chǔ)知識(shí),本文來自于IBM官方技術(shù)文檔,需要的朋友可以參考下
    2015-04-04

最新評(píng)論