如何用Selenium抓取推文点赞hover显示的完整数值(如21,633)
解决方法
这种悬停显示的完整数值,通常是通过JavaScript动态渲染的,要么藏在原元素的属性里,要么会生成一个临时提示框元素。下面给你两种可行的方案:
- 方案一:直接读取元素的
title属性
很多社交平台(比如Twitter)会把完整数值存在点赞按钮的title属性里,即使页面显示的是缩写(21.6K),你可以在悬停后直接获取这个属性值:
# 执行悬停操作后 full_likes = href_text.get_attribute('title') print(full_likes) # 输出应为21,633
如果悬停前title属性就有值,甚至可以不用执行悬停,直接读取即可。
- 方案二:定位动态生成的tooltip元素
如果title属性里没有对应值,悬停后页面会动态生成一个tooltip提示框。你可以用Selenium定位这个元素,比如通过它的角色(role)或类名:
# 先执行悬停操作 hov.perform() # 等待tooltip加载(加显式等待更稳妥) from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By tooltip = WebDriverWait(driver, 10).until( EC.visibility_of_element_located((By.CSS_SELECTOR, '[role="tooltip"]')) ) full_likes = tooltip.text print(full_likes)
注意:BeautifulSoup4是解析静态HTML源码的工具,而这种动态生成的悬浮文本不在初始源码中,所以用BS4抓不到,必须依靠Selenium处理浏览器动态渲染的内容。
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

