Разбор только текстового значения из внутреннего элемента `a` с beautifulsoup - PullRequest
0 голосов
/ 03 июля 2018

Я хочу разобрать текст селектора CSS с красивым супом.

Селектор css: td a. Если с выходом td не связан a, не анализируйте его.

У меня есть грубый код, который выглядит следующим образом:

req  = requests.get(url)
soup = BeautifulSoup(req.content, 'html.parser')
soup.find("id", {"id": "monatevent"})

HTML выглядит так:

<td id="monat">5</td>
<td id="monat">6</td>
<td id="monatevent"><a href="file?mdu=82383783">7</a></td>

Я хочу извлечь только monatevent и особенно 7 из его внутреннего a элемента.

Как я могу это сделать?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 03 июля 2018

Если вы хотите убедиться, что он содержится в теге <a>......</a>, то:

soup.find('td', {'id': 'monatevent'}).find('a').text

Возвращает:

7

Имейте в виду, что это вернет ошибку, если soup.find('td', {'id': 'montaevent'}) вернет None, и в этом случае вы можете обработать это с помощью блока try-except.

Если вы хотите найти все, что соответствует критериям, и создать список:

output = [i.find('a').text for i in soup.find_all('td', {'id': 'monatevent'})]

Опять же, это предполагает, что все теги содержат внутренний тег <a>. Если нет, то выполните:

output = []
tags = soup.find_all('td', {'id': 'monatevent'})
for i in tags:
    try:
        output.append(i.find('a').text)
    except:
        continue
0 голосов
/ 03 июля 2018

Вы должны find на основе имени тега

soup.find("td", {"id": "monatevent"})
# <td id="monatevent"><a href="file?mdu=82383783">7</a></td>

soup.find("td", {"id": "monatevent"}).text
# '7'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...