Не удается удалить некоторые теги "div" с сайта - PullRequest
0 голосов
/ 29 июня 2018

Я пытаюсь почистить вакансии с этой страницы: https://www.fl.ru.

Вероятно, это довольно новая проблема, но оказывается, что я могу получить некоторые теги, в то время как другие, кажется, недоступны, например ::1004*

from urllib.request import urlopen
from bs4 import BeautifulSoup

html = urlopen("https://www.fl.ru/projects/")
bsObj = BeautifulSoup(html, "lxml")

textTags = bsObj.findAll("div", class_="b-post__txt ")
print(str(textTags))

Спасибо

Ответы [ 2 ]

0 голосов
/ 29 июня 2018

Если вы загрузите html-страницу с помощью какого-либо загрузчика (wget или curl), вы увидите, что элементы вообще отсутствуют на странице. Элементы генерируются JavaScript.

Например (фрагмент из источника страницы):

<script type="text/javascript">document.write('<div class="b-post__body b-post__body_padtop_15 b-post__body_overflow_hidden b-layuot_width_full"> <div class="b-post__txt "> У нас есть для вас вакансия Full-stack PHP-разработчика на удаленную работу (полный рабочий день) или в офис (г. Москва).&nbsp; Работать нужно будет над нашими проектами, в том... </div> <div id="project-reason-3728923" style="display: none"> </div> </div>');</script>

У вас есть два варианта: выполнить javascript (с браузером и чем-то вроде selenium для его управления) или проанализировать его вручную, с помощью красивого супа, чтобы получить содержимое тега <script>, затем извлечь текст внутри document.write() и разбирая его с красивым супом.

0 голосов
/ 29 июня 2018

Многие современные веб-страницы динамически создают DOM в браузере с использованием Javascript, и искомые части не существуют до тех пор, пока браузер не завершит создание страницы.

Если вы не используете браузер или библиотеку с функциями Javascript, искомых элементов страницы просто не будет.

...