簡體   English   中英

Python Selenium 訪問內部元素

[英]Python Selenium access inner elements

只是為了好玩,我嘗試提取本 NFL 賽季第一天的預定比賽。 到目前為止,我在 Python 中有這段代碼

from selenium import webdriver

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

from webdriver_manager.chrome import ChromeDriverManager

browser = webdriver.Chrome(ChromeDriverManager().install())

from selenium.webdriver.chrome.options import Options

opts = Options()
opts.headless=True

#browser = driver(options=opts)
print("Start")

website = "https://www.nfl.com/schedules/2020/REG1"
browser.get(website)
gamedays = WebDriverWait(browser, 20).until(EC.visibility_of_all_elements_located((By.CLASS_NAME, "nfl-o-matchup-group")))
   
print ("There are: ", len(gamedays))

這將打印“There are: 3”,這是正確的,因為有三個部分具有該類。 我怎樣才能更深入地挖掘每個部分? 例如,有具有比賽日期的元素,當然也有具有主隊和客隊的元素。

我試過了

   for j in range(0,len(gamedays)):
      game_on = gamedays[j].find_elements_by_class_name('d3-o-section-title')
      print(game_on)

哪個打印

[<selenium.webdriver.remote.webelement.WebElement (session="d8807c1ca013d7a2d58bd7377b42ca1a", element="034de32d-bf64-4544-94aa-d97ed6640367")>]

那沒有幫助。

那么,我怎樣才能獲得這些信息呢?

任何幫助表示贊賞。

解決方案

遍歷game_on返回的game_on並打印它們的innerHtml

print(game_on.get_attribute("innerHTML"))

或者

for element in game_on:
   print(element.get_attribute("outerHTML"))

你快到了。 使用代碼行:

print(game_on)

您正在打印元素,而您需要改為打印textContent


解決方案

要打印textContent例如Friday, September 11th等,您可以使用以下任一定位器策略

  • 使用xpathget_attribute()

     browser.get(website) print([my_elem.get_attribute("innerHTML") for my_elem in WebDriverWait(browser, 20).until(EC.visibility_of_all_elements_located((By.CLASS_NAME, "nfl-o-matchup-group")))])
  • 使用xpathtext屬性:

     browser.get(website) print([my_elem.text for my_elem in WebDriverWait(browser, 20).until(EC.visibility_of_all_elements_located((By.CLASS_NAME, "nfl-o-matchup-group")))])

您可以在如何使用 Selenium 檢索 WebElement 的文本 - Python 中找到相關討論


奧特羅

鏈接到有用的文檔:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM