如何在 reddit 上获取工具提示文本?

Posted

技术标签:

【中文标题】如何在 reddit 上获取工具提示文本?【英文标题】:How can I get the tooltip text on reddit? 【发布时间】:2021-07-24 21:21:54 【问题描述】:

我正在尝试为 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

【问题讨论】:

【参考方案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) 如果不将鼠标悬停在其上,您将无法访问它。

以上是关于如何在 reddit 上获取工具提示文本?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Java Swing 中获取工具提示文本字符串的宽度?

MUI:如何在选定文本上显示工具提示组件?

如何获取访问令牌? (Reddit API)

如何使CSS工具提示在原始项目上严格保持,而不是在新生成的工具提示上?

如何在 JavaFX 按钮上设置工具提示?

硒如何获取文本大小