Соскоб поле с помощью красивого супа - PullRequest
0 голосов
/ 16 апреля 2020

Я новичок в веб-очистке. Я не могу получить поле (имя пользователя) с веб-страницы.

Это HTML веб-страницы с интересующим меня полем.

        <div class="block-body">
          <div class="block-row block-row--separated">
          <div class="block-row block-row--separated">
            <dl class="pairs pairs--columns pairs--fixedSmall">
            <dl class="pairs pairs--columns pairs--fixedSmall">
            <dl class="pairs pairs--columns pairs--fixedSmall">
            <dl class="pairs pairs--columns pairs--fixedSmall">
            <dl class="pairs pairs--columns pairs--fixedSmall">
            <dl class="pairs pairs--columns pairs--fixedSmall">
            <dl class="pairs pairs--columns pairs--fixedSmall">
              <dt>YouTube Username</dt>
                            <dd>



                              GET_THIS_FIELD



                            </dd>
                          </dl>



            <dl class="pairs pairs--columns pairs--fixedSmall">

Ниже приведены проблемы, с которыми я сталкиваюсь:

  1. Я не могу извлечь поле, так как есть несколько объектов с тем же классом опция текста не работает, и я понятия не имею, как найти решение.

  2. Поскольку поле YOUTUBE USERNAME отсутствует на всех страницах, которые я посещаю, Мне нужно включить элемент управления.

Я попробовал все, это только последняя попытка.

        profile_content = profile.content 
        soup2 = BeautifulSoup(profile_content, features="lxml") 
        if soup2.find(text=re.compile('^YouTube Username$')): 
          user_channel = soup2.find("dl", {'class': 'pairs pairs--columns pairs--fixedSmall'}).find_next_siblings('dd')
        else: 
          user_channel = "none"

Спасибо за помощь!

1 Ответ

0 голосов
/ 16 апреля 2020

Предполагая, что код HTML правильный, я мог бы дать такой ответ:

# data is the HTML code as string
soup = BeautifulSoup(data, 'html.parser')

the_field = soup.find('dt', string='YouTube Username').find_next('dd').text.strip()

print(the_field)

Для вашей собственной безопасности вы можете добавить тесты, если строка найдена, и т. Д. c. Надеюсь, это поможет.

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