python selenium 인터페이스 데이터 획득 실현

python selenium 인터페이스 데 이 터 를 가 져 옵 니 다.
selenium 은 쿼 리 함 수 를 직접 제공 하지 않 았 지만,webdriver 가 제공 하 는 API 를 통 해 조회 할 수 있 습 니 다.사용 하 는 함 수 는 Network.getResponse Body 입 니 다.
webdriver 가 제공 하 는 API 문서:https://chromedevtools.github.io/devtools-protocol/tot/Network/
Network.getResponseBody 문서 설명:

Network.getResponse Body 의 인 자 는 requestid 이 고 requestid 는 webdriver 가 요청 할 때마다 자동 으로 생 성 되 는 유일한 ID 입 니 다.requestid 를 받 으 면 요청 한 내용 을 받 을 수 있 습 니 다.
어떻게 requestid 를 가 져 옵 니까?웹 driver 대상 을 만 들 때 정보 설정 을 설정 하여 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')
인쇄 requestlog 는 하나의 배열 이 고 request 를 옮 겨 다 닙 니 다.log 검색 에서 가 져 올 url 에 대응 하 는 requestid,예 를 들 어 가 져 올 필요https://s3.pstatp.com/bytecom/resource/union_웹 2/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
python selenium 이 인터페이스 데 이 터 를 가 져 오 는 실현 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 python selenium 이 인터페이스 데 이 터 를 가 져 오 는 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 지원 을 바 랍 니 다!

좋은 웹페이지 즐겨찾기