首页 > 解决方案 > 如何使用正则表达式和属性选择元素

问题描述

我想抓取linkedin仅供个人使用(需要发布朋友公司页面),我正在使用Selenium和BeautifulSoup来解决这个问题。

我发现每个帖子都是一个 div 并且它们都有ember-view类,但是赞助的帖子也有这个我不想抓取的类,更多地挖掘 HTML 代码,我发现我可以通过选择所有具有的 div 来选择用户帖子值:urn:li:activity:XXXXXXXXXX用于data-urn属性。

但是在每个帖子 div 中,XXXXXXX是一个不同的数字,我如何选择所有 divdata-urn=urn:li:activity:XXXXXXXXX给定XXXXXXXX每个 div 中的变化数字?

标签: pythonweb-scrapingcss-selectors

解决方案


另一种解决方案。

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']

推荐阅读