如何在 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 中获取工具提示文本字符串的宽度?