Как выбрать элемент, используя регулярное выражение и атрибут - PullRequest
1 голос
/ 18 марта 2020

Я хотел бы почистить linkedin только для личного использования (нужно получить пост на странице компании-друга), и я использую Selenium и BeautifulSoup для этого.

Я обнаружил, что каждый пост - это div, и у них всех есть класс ember-view, но у спонсируемых постов также есть этот класс, который я не хочу чистить, больше копаясь в коде HTML, я обнаружил, что Я мог бы выбрать сообщения пользователя, выбрав все div, которые имеют значение: urn:li:activity:XXXXXXXXXX для атрибута data-urn.

Однако в каждом сообщении div, XXXXXXX - это другое число, как я могу выбрать все div с помощью data-urn=urn:li:activity:XXXXXXXXX, учитывая, что XXXXXXXX является изменяющимся числом в каждом div?

1 Ответ

1 голос
/ 19 марта 2020

Другое решение.

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