python - 如何在 Python 中使用 Selenium 获取 h1 标签
问题描述
我想从yahoo Finance自动获取给定股票名称的 h1 标签(Netflix 将作为示例)。这是我到目前为止得到的:
from selenium import webdriver
import time
driver = webdriver.Firefox() # Select the browser
driver.get('https://finance.yahoo.com/') # Open the website
time.sleep(2)
try:
driver.find_element_by_name("agree").click() #Check for cookie alert
except:
print("No cookies today!")
searchbar = driver.find_element_by_id("yfin-usr-qry") #Find searchbar
searchbar.send_keys("NFLX") #Send the stock name
time.sleep(2)
searchbutton = driver.find_element_by_id("search-buttons") #Enter the search
searchbutton.click()
#This is where I need help
title = driver.find_element_by_tag_name("h1")
print(str(title))
一切正常,直到我尝试通过.find_element_by_tag_name("h1")获取标题: Netflix, Inc. (NFLX ) 。html 源代码如下所示:
<div class="D(ib) " data-reactid="6">
<h1 class="D(ib) Fz(18px)" data-reactid="7">Netflix, Inc. (NFLX)</h1>
</div>
如果我想要获取的元素有一个 id,那么通过 Selenium 访问它就没有问题。仅当我处理“奇怪”的类名或缺少 id 时才会出现问题。其他几个网站也有这个问题。提前致谢!
解决方案
首先,您正在尝试这样做,str(title)
但它只是试图将元素打印为 str 而不是打印元素的文本。
我会尝试使用 XPATH 而不是标签名称来获取它。
如:
from selenium.webdriver.support import expected_conditions as EC
title = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, '//h1/text()[contains(.,"NFLX")]/parent::*'))).text
print(title)
推荐阅读
- javascript - Facebook 在网站中分享(从文本框中获取价值)
- c# - 用户对话逻辑问题
- html - 如何设置带有背景图像的电子邮件标题?
- d3.js - D3 - 轴仅显示 0-1 的值
- regex - 使用 python2.7 将 unicode 字素作为未拆分的项目
- ansible - Ansible - 如何将两个单独的列表组合成一个字典列表
- bash - Docker Exec 格式错误
- azure-service-fabric - 本地服务结构:分区低于目标副本或实例计数
- javascript - 访问 JSON 中的变量?
- python - 即使在单线程中,Python 多处理也会减慢