Как я могу разобрать HTML-файл, используя Python и красивый суп из тега HTML по значению тега HTML? - PullRequest
0 голосов
/ 31 октября 2018

Мой HTML-файл содержит один и тот же тег (<span class="fna">) несколько раз. Если я хочу дифференцировать этот тег, то мне нужно посмотреть предыдущий тег. Тег () под тегом (<span id="field-value-reporter">). В красивом супе я могу применять только при условии тега, например, soup.find_all ("span", {"id": "fna"}). Эта функция извлекает все данные для тега (<span class="fna">), но мне нужны только те, которые содержатся под тегом (<span id="field-value-reporter")

Пример HTML-тегов:

<div class="value">
    <span id="field-value-reporter">
        <div class="vcard vcard_287422" >
          <a class="email " href="/user_profile?user_id=287422" > 
            <span class="fna">Chris Pearce (:cpearce)
            </span>
          </a>
        </div>
    </span>
</div>

<div class="value">
    <span id="field-value-triage_owner">
        <div class="vcard vcard_27780" >
          <a class="email " href="/user_profile?user_id=27780"> 
            <span class="fna">Justin Dolske [:Dolske]
            </span>
          </a>
        </div>
    </span>
</div>

1 Ответ

0 голосов
/ 31 октября 2018

Использование soup.select:

soup.select('#field-value-reporter a > span') # select for all tags that are children of a tag whose id is field-value-reporter

>>> [<span class="fna">Chris Pearce (:cpearce)</span>]

soup.select использует css-селектор и, на мой взгляд, гораздо более эффективен, чем поиск элементов по умолчанию, который идет с BeautifulSoup. Обратите внимание, что все результаты возвращаются в виде списка и содержат все, что соответствует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...