国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

利用selenium獲取接口數(shù)據(jù)

這篇具有很好參考價(jià)值的文章主要介紹了利用selenium獲取接口數(shù)據(jù)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

起因:頁面展示的內(nèi)容被隱藏了部分,無法獲取完整內(nèi)容

處理方案:
1.利用request模擬接口獲取返參,模擬了請(qǐng)求頭,但操作時(shí)一直無法獲得數(shù)據(jù),報(bào)錯(cuò):org.apache.catalina.connector.ClientAbortException。未深究,大概率是服務(wù)器安全問題
selenium獲取請(qǐng)求頭可參考:https://blog.csdn.net/qq_31042199/article/details/119278315
但是跟selenium庫有沖突好像,不知道是否需要把selenium卸載了再安裝seleniumwire,待后續(xù)有時(shí)間驗(yàn)證一下。

2.通過webdriver提供的API查詢,使用的函數(shù)是Network.getResponseBody
代碼:

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

3.以上方法在操作中一直報(bào)錯(cuò)“no resource with given identifier found”,經(jīng)排查,requestId是可以獲取的,后來發(fā)現(xiàn)該接口是Ajax,selenium抓取Ajax接口的數(shù)據(jù)用如下demo(這個(gè)demo中包含了動(dòng)態(tài)url獲取過程):

import os, time, json
from selenium.webdriver.common.by import By
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

if __name__ == '__main__':
    # 引入chromedriver
    chrome_options = webdriver.ChromeOptions()
    # chrome_options.add_argument('--headless')
    # chrome_options.add_argument('--no-sandbox')
    # chrome_options.add_argument("--disable-extensions")
    # chrome_options.add_argument("--disable-gpu")
    prefs = {
        'download.default_directory': os.getenv('OS_LOG_PATH')
    }
    chrome_options.add_experimental_option('prefs', prefs)
    # make chrome log requests
    capabilities = DesiredCapabilities.CHROME
    # caps['goog:loggingPrefs']
    capabilities["goog:loggingPrefs"] = {"performance": "ALL"}  # newer: goog:loggingPrefs
    # capabilities['acceptSslCerts'] = True
    #browser = webdriver.Chrome(executable_path=r'/opt/google/chrome/chromedriver', options=chrome_options)
    browser = webdriver.Chrome(executable_path=r'C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe', options=chrome_options,desired_capabilities=capabilities)
    browser.implicitly_wait(3)
    browser.get("https://#########")

    # 輸入賬號(hào)
    browser.implicitly_wait(3)
    username_inputbox = browser.find_elements(By.XPATH, '//*[@id="app"]/section/div[1]/div/div[1]/div/div[2]/form/div[1]/div/div/div/input')[0]
    username_inputbox.click()
    browser.implicitly_wait(3)
    username_inputbox.clear()
    username_inputbox.send_keys("#######")

    # 輸入密碼
    browser.implicitly_wait(3)
    password_inputbox = browser.find_elements(By.XPATH, '//*[@id="app"]/section/div[1]/div/div[1]/div/div[2]/form/div[2]/div/div/div/input')[0]
    password_inputbox.click()
    browser.implicitly_wait(3)
    password_inputbox.clear()
    password_inputbox.send_keys("#######")

    # 點(diǎn)擊登錄
    browser.implicitly_wait(3)
    submit_btn = browser.find_elements(By.XPATH, '//*[@id="app"]/section/div[1]/div/div[1]/div/div[2]/form/div[3]/div/button')[0]
    submit_btn.click()
    # 等待5秒
    time.sleep(5)
    #-------------------------------------------------
    base_url = "https://#########"
    browser.get(base_url)

    time.sleep(3)
    # extract requests from logs
    logs_raw = browser.get_log("performance")
    logs = [json.loads(lr["message"])["message"] for lr in logs_raw]

    def log_filter(log_):
        return (
            # is an actual response
                log_["method"] == "Network.responseReceived"
                # and json
                and "json" in log_["params"]["response"]["mimeType"]
        )

    for log in filter(log_filter, logs):
        request_id = log["params"]["requestId"]
        resp_url = log["params"]["response"]["url"]
        print(request_id)
        print(f"Caught {resp_url}")
        json_str = json.dumps(browser.execute_cdp_cmd("Network.getResponseBody", {"requestId": request_id}), indent=4)
        # 創(chuàng)建一個(gè)params.json文件
        with open(f'{request_id}.json', 'w') as f:
            f.write(json_str)  # 將json_str寫到文件中


    browser.quit()

后續(xù)如遇見更多的獲取接口數(shù)據(jù)的情況,再做補(bǔ)充文章來源地址http://www.zghlxwxcb.cn/news/detail-512514.html

到了這里,關(guān)于利用selenium獲取接口數(shù)據(jù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 如何利用python調(diào)用API接口獲取數(shù)據(jù)進(jìn)行測試

    如何利用python調(diào)用API接口獲取數(shù)據(jù)進(jìn)行測試

    一、Python 可以使用 requests 庫來調(diào)用 API 接口獲取數(shù)據(jù)。以下是基本的步驟: 1.安裝 requests 庫 pip install requests 2.導(dǎo)入 requests 庫 import requests 3.構(gòu)建 API 請(qǐng)求的 URL 根據(jù) API 文檔,構(gòu)建請(qǐng)求的URL。 例如,? https://api.example.com/posts ?是獲取所有帖子的 URL。 4.發(fā)送 API 請(qǐng)求 使用? requ

    2024年02月11日
    瀏覽(25)
  • vue3項(xiàng)目利用iframe展示其他頁面

    iframe是html內(nèi)聯(lián)框架元素,它能夠?qū)⒘硪粋€(gè) HTML 頁面嵌入到當(dāng)前頁面中。 主要屬性如下: src 被嵌套的頁面的 URL 地址 name 框架名稱 scrolling 否要在框架內(nèi)顯示滾動(dòng)條。值; auto(僅當(dāng)框架的內(nèi)容超出框架的范圍時(shí)顯示滾動(dòng)條)、yes、no width iframe的寬度 height iframe的高度 frameborde

    2024年02月12日
    瀏覽(21)
  • selenium獲取訪問頁面url

    selenium獲取訪問頁面url

    但在原頁面上點(diǎn)擊按鈕打開新頁面,獲取新頁面地址使用current_url()獲取到的地址還是原頁面地址。 ?

    2024年02月11日
    瀏覽(16)
  • selenium--獲取頁面信息和截圖

    selenium--獲取頁面信息和截圖

    主要方法如下圖: 介紹一下常用的方法: 獲取瀏覽器名字 獲得當(dāng)前的url 獲得這個(gè)頁面的title,也就是這個(gè): 獲得當(dāng)前窗口id 獲得所有窗口的id 獲得這個(gè)頁面的html源碼 現(xiàn)在要判斷打開的頁面是否是百度頁面,可以用到上面的幾個(gè)方法: 1.title 2.page_source 獲得二進(jìn)制內(nèi)容 這只

    2024年02月09日
    瀏覽(16)
  • python利用selenium獲取網(wǎng)頁head中的title

    工作中有批量獲取網(wǎng)頁head中title的應(yīng)用場景,實(shí)踐中遇到了一些問題,以此記錄一下。 通過檢查發(fā)現(xiàn)網(wǎng)頁的head中的title確實(shí)有文本,但是使用selenium的driver.title提取到了空字符串’’ 接著使用driver.find_element(By.XPATH, ‘/html/head/title’).is_displayed(),得到False,說明title被隱藏了

    2024年02月13日
    瀏覽(17)
  • python 面向?qū)ο罄胹elenium【獲取某東商品信息】

    python 面向?qū)ο罄胹elenium【獲取某東商品信息】

    用python程序和谷歌selenium插件獲取某東商品詳細(xì)信息【商品名稱、商品簡介,超鏈接】 利用selenium自動(dòng)化程序 中的css頁面結(jié)構(gòu)索取來獲取詳細(xì)數(shù)據(jù) 關(guān)于谷歌selenium的安裝方法和使用方法 第一步檢查自己谷歌瀏覽器的版本 1.1 找到設(shè)置:并鼠標(biāo)點(diǎn)擊進(jìn)入 1.2進(jìn)入設(shè)置選項(xiàng)后,下滑

    2024年01月16日
    瀏覽(14)
  • 利用selenium獲取Chrome日志(Java版和Python版)

    1.方式一(推薦優(yōu)先使用該方式) 2.方式二

    2024年02月17日
    瀏覽(23)
  • PyQt5利用Qt Designer制作一個(gè)可以拖動(dòng)獲取文件信息的頁面

    PyQt5利用Qt Designer制作一個(gè)可以拖動(dòng)獲取文件信息的頁面

    前言 本篇在講什么 用pyqt5制作一個(gè)簡單的程序,拖動(dòng)文件或腳本可以讀取文件信息 本篇適合什么 適合 初學(xué)PyQt5 的小白 本篇需要什么 對(duì) Python 語法有簡單認(rèn)知 對(duì) Qt 有簡單認(rèn)知 依賴 Pycharm 編輯器 本篇的特色 具有全流程的 圖文教學(xué) 重實(shí)踐,輕理論,快速上手 提供全流程的

    2024年01月15日
    瀏覽(22)
  • selenium自動(dòng)獲取cookies用于requests做接口請(qǐng)求爬蟲

    目錄 一、思想 二、代碼 ?????????有關(guān)爬蟲一些報(bào)錯(cuò)解決,或是爬蟲工具的使用及其他問題的,可以看看我的爬蟲專欄:博主_zkkkkkkkkkkkkk的爬蟲專欄 一、思想 ? ? ? ? selenium可以用來模擬用戶操作的python第三方包,而requests則是用來做接口請(qǐng)求。兩者一結(jié)合,可能在某些

    2024年02月16日
    瀏覽(30)
  • Selenium獲取本地已打開的瀏覽器頁面進(jìn)行跟蹤和自定義日志記錄

    本操作只是打基本的核心代碼寫清楚,基礎(chǔ)環(huán)境配置和原理 參考Selenium 參考Selenium自動(dòng)化獲取WebSocket信息 - 走看看

    2024年02月16日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包