python - 如何使用正则表达式和属性选择元素
问题描述
我想抓取linkedin仅供个人使用(需要发布朋友公司页面),我正在使用Selenium和BeautifulSoup来解决这个问题。
我发现每个帖子都是一个 div 并且它们都有ember-view
类,但是赞助的帖子也有这个我不想抓取的类,更多地挖掘 HTML 代码,我发现我可以通过选择所有具有的 div 来选择用户帖子值:urn:li:activity:XXXXXXXXXX
用于data-urn
属性。
但是在每个帖子 div 中,XXXXXXX
是一个不同的数字,我如何选择所有 divdata-urn=urn:li:activity:XXXXXXXXX
给定XXXXXXXX
每个 div 中的变化数字?
解决方案
另一种解决方案。
from simplified_scrapy import SimplifiedDoc,req,utils
html='''
<div>
<div class="ember-view" data-urn="urn:li:activity:123">123</div>
<div class="ember-view" data-urn=urn:li:activity:456>456</div>
<div class="ember-view" data-urn=urn:li:activity:789>789</div>
<div class="ember-view">other</div>
</div>
'''
doc = SimplifiedDoc(html)
# First way
divs = doc.getElementsByReg('data-urn[\s"=]+urn:li:activity:[\d]+',tag="div").text
print (divs)
# Second way
divs = doc.selects('div.ember-view').containsReg('urn:li:activity:[\d]+',attr="data-urn").text
print (divs)
结果:
['123', '456', '789']
['123', '456', '789']
推荐阅读
- java - 通过 Liquibase 在文件搜索 master.xml 中构建 Travis CI 的问题
- julia - 使用特殊字符“>”在 Julia 中运行外部程序
- android - 如何更有效地更新 UI
- google-earth-engine - monthlyRainfall.filter(...).first 不是函数
- r - R:根据其他数据框动态定义值范围
- flutter - 如何在颤动中禁用 ForceDark
- javascript - 尝试借助 Vuejs 中的列表和网格视图中的分页显示数据时出现问题?
- python - Qiskit-Textbook 是在哪里下载的?
- visual-studio - 分析服务视觉工作室中的错误
- python - 使用 Python 从 Google 工作表中的特定行(一次)获取数据