При использовании BeautifulSoup html нужны данные с другим индексом в некоторых результатах поиска - PullRequest
0 голосов
/ 18 февраля 2019

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

Я собираю фрагменты данных из результатов поиска.Местоположение / номера индексов отличаются в некоторых случаях.

По сути, точный текст, который мне нужен, вычеркнут из HTML ниже: "7XB21".

<dl class="last">
    ::before
    <dt>Part Code:</dt>
    <dd>
        "7XB21"
        <span class="separator">,</span>
    < /dd>
    <dt>Weight:</dt>
    <dd>97</dd>
</dl>

Это легко сделать с помощью приведенного ниже кода Python, так как он дает мне нужный мне результат - "7XB21"

modelcode_container = container.find_all("dd")
        modelcode = (modelcode_container[5].text)
 

ОДНАКО!Некоторому фрагменту HTML-кода, хотя и структурированному, не хватает некоторой информации, которую показывает приведенный выше пример.Вот пример проблемного HTML:

<dl class="last">
    <dt>Stock id:</dt>
    <dd>c12
        <span class="separator">,</span>
    </dd>
    <dt>Part Code:</dt>
    <dd>
        "8B727"
        <span class="separator">,</span>
    </dd>
    <dt>Weight:</dt>
    <dd>102</dd>
</dl>

Видите разницу?Мне нужно было бы указать другой порядковый номер, чтобы получить правильные данные, в данном случае это «8B727».

Я не уверен, как это настроить, любая помощь будет признательна.Спасибо!

1 Ответ

0 голосов
/ 18 февраля 2019

Если вы уверены, что <dt>Part Code:</dt> встречается раньше, вы можете использовать find_next_sibling () , чтобы получить рядом с ним тег dd.

soup.find('dt',text="Part Code:").find_next_sibling('dd')
...