Не удается получить данные из span-тега с BeautifulSoup - PullRequest
0 голосов
/ 26 июня 2019

Я пытаюсь удалить страницу Instagram и хочу получить / получить доступ к тегам div, присутствующим внутри тега span. но я не могу! HTML-код страницы Instagram выглядит как

 <head>--</head>
    <body>
       <span id="react-root" aria-hidden="false">
       <form enctype="multipart/form-data" method="POST" role="presentation">…</form>
       <section class="_9eogI E3X2T">
          <main class="SCxLW  o64aR" role="main">
             <div class="v9tJq VfzDr">
                 <header class=" HVbuG">…</header>
                 <div class="_4bSq7">…</div>
                 <div class="fx7hk">…</div>
             </div>
          </main>
      </section>
    </body>

Да, это как

from bs4 import BeautifulSoup
import urllib.request as urllib2
html_page = urllib2.urlopen("https://www.instagram.com/cherrified_/?hl=en")
soup = BeautifulSoup(html_page,"lxml")
span_tag = soup.find('span') # return span-tag correctly
span_tag.find_all('div')    # return empty list, why ?

пожалуйста, укажите также пример.

1 Ответ

1 голос
/ 26 июня 2019

Instagram - это одностраничное приложение, основанное на React, что означает, что его источником является просто «пустая» страница, которая загружает JavaScript для динамической генерации контента в браузере после загрузки.

Нажмите «Просмотр источника»или перейдите на view-source:https://www.instagram.com/cherrified_/?hl=en в Chrome.Это HTML-код, который вы загружаете с помощью urllib.request.

. Вы видите, что существует один тег <span>, который не включает тег <div>.(Примечание: <div> внутри <span> не разрешено ).

Очистка instagram.com таким способом невозможна. Это также может быть недопустимо (я не юрист).

Примечания:

  • ваш пример HTML-кода не содержит закрывающий тег для <span>.
  • ваш пример HTML-кода не соответствует ссылке, которую вы указали в фрагменте python.
  • в последней строке фрагмента python, который вы, вероятно, имели в виду span_tag.find_all('div') (обратите внимание на переменнуюимя и единственное число 'div').
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...