Python Selenium访问内部元素

2024-10-02 22:24:12 发布

您现在位置:Python中文网/ 问答频道 /正文

为了好玩,我试着提取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))

这打印了“有: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")>]

这是没有帮助的

那么,我怎样才能得到这些信息呢

感谢您的帮助


Tags: fromimportbrowsersupportbyseleniumchromeprint
2条回答

解决方案

循环遍历game_on中返回的对象并打印它们的innerHtml

print(game_on.get_attribute("innerHTML"))

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

你就快到了。使用代码行:

print(game_on)

您正在打印元素,需要打印文本内容


解决方案

要打印文本内容,例如9月11日星期五等,您可以使用以下任一Locator Strategies

  • 使用xpath和get_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")))])
    
  • 使用xpath和文本属性:

    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")))])
    

You can find a relevant discussion in How to retrieve the text of a WebElement using Selenium - Python


奥特罗

链接到有用的文档:

相关问题 更多 >