python - 如何在 Python 中使用 Selenium 获取 h1 标签

标签 python html selenium web-crawler finance

我想自动从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 时,才会出现此问题。其他几个网站也有这个问题。提前致谢!

最佳答案

位置命令在元素加载之前执行。感谢 rekeson21 我找到了两个解决方案来解决这个问题:

time.sleep(6)
title = driver.find_element_by_xpath('//h1').text
print(title)
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)

这两种情况的输出是:

Netflix, Inc. (NFLX)

关于python - 如何在 Python 中使用 Selenium 获取 h1 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66988812/

相关文章:

python - 当类 def 在另一个文件中时使用 Python 装饰器?

python - 检查 pandas DataFrame 中的两行是否具有相同的值集,无论列顺序如何

html - 日文 unicode 字符正在反转 CSS 向左浮动

html - 在特定行的元素之后,在 materialize 的页脚中提供额外不需要的空间。想删除它

java - 如何在控制台中写入通过或失败结果以供单击提交按钮(Selenium)

selenium - 如何在 Selenium 中使用 Chrome DevTools 协议(protocol)(使用 Python)来捕获 HTTP 请求和响应?

python - 如何从大型 python 数据框中的复杂字符串中提取数字

javascript - 无法使用 javascript 和 jquery 获取 XML 属性值

java - Selenium webdriver : Modifying navigator. webdriver 标志以防止 selenium 检测

python - google 自定义搜索 api 返回与 google.com 不同