首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何从twitter页面资源管理器中提取标签?

如何从twitter页面资源管理器中提取标签?
EN

Stack Overflow用户
提问于 2019-08-17 12:05:28
回答 3查看 474关注 0票数 1

我想在python3上使用selenium从twitter页面中提取标签名称(Hashtag)。但是没有特殊的标签或类,甚至没有ids能够定位和保存它们。

有没有一种方法,即使它们改变了,我也可以提取它们,而不必每次都编辑我的代码?

我认为下面的代码将把我带到使用链接文本的explore页面。但我不能使用相同的方法来定位标签,因为它们会时不时地变化。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
explore = driver.find_element_by_link_text("Explore")

我希望能够找到标签并将它们保存到列表中,这样我就可以在以后的工作中使用该列表。

这是其中一个标签的html代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<span class="r-18u37iz"><span dir="ltr" class="css-901oao css-16my406 r-1qd0xha r-ad9z0x r-bcqeeo r-qvutc0">#ARSBUR</span></span>

这些类不是唯一的,它们在页面的其他元素中使用,所以我不能使用它们。

如果有一种方法可以定位(#)标记,那么我只能获得包含它们的文本。

EN

回答 3

Stack Overflow用户

发布于 2019-08-17 21:35:21

要从twitter页面中提取标签,即在Python3上使用Seleniumhttps://twitter.com/explorer?lang=en,您必须为visibility_of_all_elements_located()引入WebDriverWait,您可以使用以下Locator Strategies之一

使用CSS_SELECTOR

driver.get("https://twitter.com/explorer?lang=en") print([my_elem.get_attribute("innerHTML") ) for my_elem in WebDriverWait(driver,5).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR,"ahref^='/hashtag'>span.trend-name")))])

  • Using XPATH

hashtag(“https://twitter.com/explorer?lang=en") print([my_elem.get_attribute("innerHTML") for my_elem in WebDriverWait(driver,'trend-name')")))])

  • Note”//astarts with(@href,'/hashtag')/spancontains(@class,hashtag:您必须添加以下导入:

from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC

  • Console输出:

'#MCITOT','#WorldSupportsKashmir','#MCIvsTOT',‘#11 11YearsOFViratism’,'#ManCity'

票数 1
EN

Stack Overflow用户

发布于 2019-08-17 13:09:01

你可以将页面源码转储到漂亮汤4.7.1 +中,并在使用类的同时使用:contains。您的类看起来与我看到的不同,但我对url做了一个假设。

注意:在页面上,可以在不同的类下有其他#,这将使选择器".trend-name, .twitter-hashtag"

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from bs4 import BeautifulSoup as bs
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

d = webdriver.Chrome(r'path\chromedriver.exe')
d.get('https://twitter.com/explorer?lang=en')
WebDriverWait(d,5).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, ".trend-name")))
soup = bs(d.page_source, 'lxml') 
hashtag_trends = [i.text for i in soup.select('.trend-name:contains("#")')]
print(hashtag_trends)

或者测试.text是否仅以#开头表示selenium

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from bs4 import BeautifulSoup as bs
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

d = webdriver.Chrome(r'path\chromedriver.exe')
d.get('https://twitter.com/explorer?lang=en')
hashtag_trends = [i.text for i in 
    WebDriverWait(d,5).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, ".trend-name")))
    if i.text.startswith('#')
]

票数 0
EN

Stack Overflow用户

发布于 2019-08-18 00:42:19

对于定位器趋势主题,您可以使用xpath

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
driver.find_element(By.XPATH, '(//*[contains(@class,"trend-name")])[1]').text
driver.find_element(By.XPATH, '(//*[contains(@class,"trend-name")])[1]').click()

您可以通过以下方式获取元素的计数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
len_locator = driver.find_elements(By.XPATH, '//*[contains(@class,"trend-name")]')
print len(len_locator)

或者,如果只希望定位器仅以#开头,则可以使用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
driver.find_element(By.XPATH, '(//*[@dir="ltr" and starts-with(text(), "#")])[1]').text
driver.find_element(By.XPATH, '(//*[@dir="ltr" and starts-with(text(), "#")])[1]').click

您可以通过以下方式获取元素的计数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
len_locator = driver.find_elements(By.XPATH, '//*[@dir="ltr" and starts-with(text(), "#")]')
print len(len_locator)

它是热门话题的第一个定位器,如果你想要第二个定位器,那么将[1]替换为[2]等。使用迭代来获取全部。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57536127

复制
相关文章
Java 如何在 Array 和 Set 之间进行转换
在本文章中,我们对如何在 Java 中对 Array 和 Set 进行转换进行一些说明和示例。
HoneyMoose
2023/05/10
4900
Java 如何在 Array 和 Set 之间进行转换
如何在 Vue.js 和 Nuxt.js 之间做出选择?
今天看了一位国外大佬的文章,主要是他对在项目中如何选择 Vue.js 或 Nuxt.js 的看法,欢迎大家在评论区发表看法,以下内容是他关于这个问题看法的整理,由于翻译水平有限,欢迎大家指正。
前端达人
2023/09/11
3.4K0
如何在 Vue.js 和 Nuxt.js 之间做出选择?
Kafka 和 Kinesis 之间的对比和选择
在对比 Kafka 和 Kinesis 和之前,我们需要对 Kinesis 有所了解。
HoneyMoose
2021/08/07
1.9K0
Kafka 和 Kinesis 之间的对比和选择
innertext textcontent innerHtml
innertext textcontent innerHtml innerHTML : IE, FireFox都支持 innerText : IE支持 textContent : FireFox 支持 outerHTML, outerText : IE 支持 innerHTML 设置或获取位于对象起始和结束标签内的 HTML outerHTML 设置或获取对象及其内容的 HTML 形式 innerText,textContent 设置或获取位于对象起始和结束标签内的文本 outerText
2021/11/08
4990
在 TypeScript 中,如何在不同文件之间进行模块化引用和导出?
在 TypeScript 中,可以使用 import 和 export 关键字在不同文件之间进行模块化引用和导出。
王小婷
2023/09/14
1.3K0
如何在微服务之间共享和同步代码
微服务架构非常适合构建可扩展的代码库,具有更少的耦合,更好的关注点分离,更高的弹性,结合不同的技术,最重要的是,更好的模块化和构建它的组件的可重用性。
February
2018/11/23
2.7K0
如何在 Java 和 Kotlin 之间进行互操作 | AndroidDevSummit 中文字幕视频
Kotlin 超好用,您也许想用 Kotlin 写所有的东西,但那些现有的 Java 语言代码该怎么办呢?或者您需要用到一个利用 Java 语言编写并已经在很多 Kotlin 或者 Java 项目里被采用的库或者项目。
Android 开发者
2019/11/28
7190
前端之HTML DOM操作
当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model)。
山河木马
2019/03/05
6000
Boruta 和 SHAP :不同特征选择技术之间的比较以及如何选择
当我们执行一项监督任务时,我们面临的问题是在我们的机器学习管道中加入适当的特征选择。只需在网上搜索,我们就可以访问讨论特征选择过程的各种来源和内容。
deephub
2021/07/23
3.2K0
Boruta 和 SHAP :不同特征选择技术之间的比较以及如何选择
Boruta 和 SHAP :不同特征选择技术之间的比较以及如何选择
来源:DeepHub IMBA 本文约1800字,建议阅读5分钟 在这篇文章中,我们演示了正确执行特征选择的实用程序。 当我们执行一项监督任务时,我们面临的问题是在我们的机器学习管道中加入适当的特征选择。只需在网上搜索,我们就可以访问讨论特征选择过程的各种来源和内容。 总而言之,有不同的方法来进行特征选择。文献中最著名的是基于过滤器和基于包装器的技术。在基于过滤器的过程中,无监督算法或统计数据用于查询最重要的预测变量。在基于包装器的方法中,监督学习算法被迭代拟合以排除不太重要的特征。 通常,基于包装器的方法
数据派THU
2023/03/29
2.6K0
Boruta 和 SHAP :不同特征选择技术之间的比较以及如何选择
利用VNC进行Windows和Linux之间的复制
在Linux打开如下命令: vncconfig -nowin& 把这个窗口开着就可以在windows和linux之间自由复制文字了。 把这个窗口开着就可以在windows和linux之间自由复制文字了
狼啸风云
2019/12/10
6.2K0
利用VNC进行Windows和Linux之间的复制
如何在WordPress网站之间共享用户和登录
wordpress为网站系统提供了相同的数据表结构,为快速实现多个WordPress网站之间共享用户数据提供了可能。wordpress如何实现如网易通行证等大站一样的共享用户登录呢?只需要将需要共享的数据库共用即可,我们这里只需要共享_user与_usermeta表,下面是完整实现过程。
许都博客
2021/06/15
1.9K0
如何在选择一门编程语言后,进行深入造化?
关于编程,是选择去培训还是自学,这是一个千人千面的问题,小编之前看过一篇文章,感兴趣可以去围观:《想编程,是勤奋自学还是去培训班学习?》,而今天文章主题是 做了选择之后该如何一步步走下去?
逆锋起笔
2020/04/15
6300
如何在选择一门编程语言后,进行深入造化?
Kustomize 和 Helm 之间,我为什么选择了 Kustomize?
本文将记录为什么最终没有采用 Helm 而是选择了 Kustomize 作为 Kubernetes 应用的部署工具。
iMike
2019/09/17
4.4K0
Kustomize 和 Helm 之间,我为什么选择了 Kustomize?
如何在 Ansible Playbook 中进行变量替换,解决环境之间差异的问题?
Ansible默认的Inventory文件是INI格式。直接开始测试,先看定义的host文件:
Criss@陈磊
2019/11/18
2.3K0
如何在 Ansible Playbook 中进行变量替换,解决环境之间差异的问题?
如何在 Ansible Playbook 中进行变量替换,解决环境之间差异的问题?
Ansible默认的Inventory文件是INI格式。直接开始测试,先看定义的host文件:
DevOps时代
2019/11/14
5K0
如何在 Ansible Playbook 中进行变量替换,解决环境之间差异的问题?
再谈BOM和DOM(5):各个大流浪器DOM和BOM里面的那些坑—兼容性
所有浏览器的focus/blur事件都不冒泡,万幸的是大部分浏览器支持focusin/focusout事件,不过可恶的firefox连这个都不支持。
周陆军
2021/07/13
9860
innerHTML与innerText的异同
在一道面试题中看到的。 1、功能讲解:  innerHTML 设置或获取位于对象起始和结束标签内的 HTML  outerHTML 设置或获取对象及其内容的 HTML 形式  innerText 设置或获取位于对象起始和结束标签内的文本  outerText 设置(包括标签)或获取(不包括标签)对象的文本  2、示例  1 <html> 2 <head> 3 <title>Demo</title> 4 <style><!-- 5 body {font-family:"宋体";color="
Sb_Coco
2018/05/28
7720
开发 | 如何在小程序页面之间,传递数据和变量?
最近组里开发小程序,遇到了一个困扰前端很长时间的话题:页面之间,如何传递数据和变量?
知晓君
2018/08/01
1.1K0
开发 | 如何在小程序页面之间,传递数据和变量?
点击加载更多

相似问题

Wireshark未捕获端口2000

20

特定UDP字节的wireshark捕获筛选器

10

如何在Wireshark中使用SSH远程捕获

30

确定链路层物理媒体类型

11

纪元和wireshark捕获

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文