【问题标题】:How can I get the tooltip text on reddit?如何在 reddit 上获取工具提示文本?
【发布时间】:2025-12-14 07:45:01
【问题描述】:

我正在尝试为 reddit 构建某种硒 scraper。但是,我确实发现自己在获取图片中显示的时间戳时遇到了一些麻烦。

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.support.wait import WebDriverWait
from time import sleep # this should go at the top of the file
from bs4 import BeautifulSoup as bs

sleep(5)
driver = webdriver.Chrome(ChromeDriverManager().install())

driver.get('https://www.reddit.com/r/StockMarket/')

title = driver.find_element_by_css_selector('h3._eYtD2XCVieq6emjKBH3m').text
timestamp = driver.find_element_by_css_selector('a._3jOxDPIQ0KaOWpzvSQo-1s').text
print(title)
print(timestamp)

[Output]: We’ve been doing it all wrong
          5 hours ago

Desired result

【问题讨论】:

    标签: python html selenium web web-scraping


    【解决方案1】:

    要获取时间戳(发布内容的时间),请使用 css 选择器:

    timestamp = driver.find_element_by_css_selector('a[data-click-id=timestamp]._3jOxDPIQ0KaOWpzvSQo-1s')
    

    在此处查看如何使用数据框。这是一个很好的例子Feed dataframe with webscraping

    定位器帖子列表将是:

    post = driver.find_elements_by_css_selector('._1poyrkZ7g36PawDueRza-J._11R7M_VOgKO1RJyRSRErT3 ')
    

    获取工具提示定位器有点棘手。除非您将鼠标悬停在时间戳上,否则您不会看到它。 这非常有效:._2J_zB4R1FH2EjGMkQjedwc.u6HtAZu8_LKL721-EnKuR[style]

    查看此答案以了解如何在悬停时检查元素Inspect hovered element in Chrome?

    【讨论】:

    • 但是如果我需要将鼠标悬停在元素上,我该如何检查它呢?你能详细解释一下吗?谢谢。
    • 我试过了,但是弹出这个错误。 date = driver.find_element_by_class_name('_2J_zB4R1FH2EjGMkQjedwc u6HtAZu8_LKL721-EnKuR').text NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":".div._2J_zB4R1FH2EjGMkQjedwc u6HtAZu8 "}(会话信息:chrome=90.0.4430.93)
    • 现在我可以找到工具提示文本的正确类名和 xpath,但我无法使用 find_element_by_class_name 或 find_element_by_xpath 方法访问文本。弹出如下错误:NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"/html/body/div[7]/div/text()"} (会话信息:chrome=90.0.4430.93)
    • 如果不将鼠标悬停在其上,您将无法访问它。