微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法获取跨度类文本

如何解决无法获取跨度类文本

请找到附件图片。我想获取图像中突出显示的部分, 我想获取属性 1 · Trending,#tuesdaymotivations,7,750 Tweets .

请指教。 获取的 URL=https://twitter.com/explore/tabs/trending

from selenium import webdriver

url = 'https://twitter.com/explore/tabs/trending'

# scrolling and scraping tweets

driver = webdriver.Chrome('/chromedriver')
driver.get(url)

trends = driver.find_element_by_xpath('//div[@data-testid="trends"]')
trend = trends[0]
trend.find_element_by_xpath('.//span').text

输出

Traceback (most recent call last):
  File "/home/PycharmProject/Twitter_trending/ss.py",line 13,in <module>
    trends = driver.find_element_by_xpath('//div[@data-testid="trends"]')
  File "/usr/local/lib/python3.8/dist-packages/selenium/webdriver/remote/webdriver.py",line 394,in find_element_by_xpath
    return self.find_element(by=By.XPATH,value=xpath)
  File "/usr/local/lib/python3.8/dist-packages/selenium/webdriver/remote/webdriver.py",line 976,in find_element
    return self.execute(Command.FIND_ELEMENT,{
  File "/usr/local/lib/python3.8/dist-packages/selenium/webdriver/remote/webdriver.py",line 321,in execute
    self.error_handler.check_response(response)
  File "/usr/local/lib/python3.8/dist-packages/selenium/webdriver/remote/errorhandler.py",line 242,in check_response
    raise exception_class(message,screen,stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//div[@data-testid="trends"]"}
  (Session info: chrome=90.0.4430.72)

预期输出

1
·
Trending
#tuesdaymotivations
7,750 Tweets

2
·
Politics · Trending
#ModiResignorRepeal
37.6K Tweets
3
·
Trending
#ThankfulTuesday
12.8K Tweets...etc

解决方法

尝试使用 JavaScript 获取文本。使用此代码。

span = trend.find_element_by_xpath('.//span')
text = driver.execute_script("return arguments[0].innerText",span)

此方法还可以提供来自嵌套元素的文本。仍然无法正常工作,然后尝试使用 css 选择器而不是 xpath。

trends = driver.find_elements_by_css_selector('div[data-testid="trends"]')
trend = trends[0]
span = trend.find_element_by_xpath('.//span')
text = driver.execute_script("return arguments[0].innerText",span)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。