Красивые теги поиска супа на основе частичного значения атрибута - PullRequest
0 голосов
/ 31 мая 2018

Я пытаюсь идентифицировать теги в HTML-документе на основе части значения атрибута.

Например, если у меня есть объект Beautifulsoup:

import bs4 as BeautifulSoup

r = requests.get("http:/My_Page")

soup = BeautifulSoup(r.text, "html.parser")

Я хочу tr теги с атрибутом id, значения которых имеют следующий формат: «news_4343_23255_xxx».Я заинтересован в любом теге tr, если в нем есть «новости» в виде первых 4 символов значения атрибута id.

Я знаю, что могу искать следующим образом:

trs = soup.find_all("tr",attrs={"id":True})

, который дает мне все tr тегов с атрибутом id.

Как выполнить поиск на основе подстроки?

Ответы [ 3 ]

0 голосов
/ 31 мая 2018

Попробуйте это:

trs = soup.find_all("tr", id=lambda x: x and x.startswith('news_')

здесь указано: Соответствующие идентификаторы в BeautifulSoup

0 голосов
/ 31 мая 2018

Вы можете использовать регулярные выражения для этого.

import re
from bs4 import BeautifulSoup
import requests


r = requests.get("example")

soup = BeautifulSoup(r.text, 'html.parser')
regex = re.compile('news')
news = soup.find_all("td", {"class" : regex})
print news
0 голосов
/ 31 мая 2018

Используйте регулярное выражение , чтобы получить tr с id, начиная с "news"

Пример:

from bs4 import BeautifulSoup
import re
soup = BeautifulSoup(html,  "html.parser")
for i in soup.find_all("tr", {'id': re.compile(r'^news')}):
    print(i)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...