Во время некоторых тестов я заметил, что тег а внутри тега div, красивый суп автоматически "переводит" его как текст:
<div class='a'>
<a href='....'>TEXT</a>
<i .....
</div>
Когда я ищу тег div с помощью команды find_all('div', {'class' : 'a'}) и пытаюсь распечатать результат div.a, bs4 показывает мне значение Никто ... но если я попытаюсь использовать print div.text, bs4 покажет только ТЕКСТ, а не тег а).
это код раздела:
soup = BeautifulSoup(html, 'lxml')
data=soup.find_all('div', {'class' : 'a'})
for div in data:
print div.a
$ None
Почему?
ОБНОВИТЬ: только что заметил ... вот еще одна проблема. В исходном коде есть тег а ... но теперь (глядя на результат с prettify) я понял, что этот тег bs4 заставляет меня видеть его как div, тогда как на самом деле это тег а! Странный!!!
ОШИБКА???
Решено Я немного почистил и удалил все пакеты для запросов и urllib3 ... затем переустановил все с помощью подходящий и теперь работает. Версии пакетов запросов и urllib3 (соответственно): 2.12.4-1 и 1.19.1-1






Мне не удалось воспроизвести вашу проблему, но в HTML-коде, который вы используете, есть опечатка: clas='a' должен быть class='a'.
Код, который я использовал:
from bs4 import BeautifulSoup
html = '''<div class='a'>
<a href='....'>TEXT</a>
<i> .....</i>
</div>'''
soup = BeautifulSoup(html, 'html.parser')
data = soup.find_all('div', {'class': 'a'})
for div in data:
print (div.a)
На выходе я получил:
<a href = "....">TEXT</a>
.text не будет отображать теги, а будет отображать только текст внутри выбранного тега и его дочерних элементов. Вам также понадобится объект BeautifulSoup, чтобы использовать метод find_all.
@vincenzogianfelice Я думаю, что проблема не в bs4 - у меня он отлично работает с python3. Как указано в здесь, поддержка bs4 для python2 уже прекращена. Если вы все еще хотите использовать python2, попробуйте удалить bs4 и выполнить pip2 install beautifulsoup4
Фактически я установил последнюю версию с помощью pip2. Но я попытался сделать что-то еще ... если я возьму кусок кода и вставлю его прямо в красивый суп, все будет работать нормально, но если я попытаюсь получить документ через Запросы, то тег 'a' не прочитает его мне ... BeautifulSoup(requests.get(url,headers).content, 'lxml')
Я пробовал также с python3 ... но ничего ...
хм, это немного странно. Я никогда не сталкивался с подобными проблемами. Вы пробовали использовать html.parser по умолчанию вместо lxml?
Или, может быть, вы можете вставить здесь URL-адрес, и я тоже могу попытаться выяснить это
Я нашел проблему. Проблема в Запросы .... я попытался сохранить index.html в файл и прочитать из файла ... и все работает нормально. Я также пробовал вставить индекс прямо в BeautifulSoup ... и работает! Только если читать напрямую из запросов (request.get(url).content) не получается ... очень странно! Я уверен, что проблема в requests.get
Я понимаю. Вероятно, это потому, что BeautifulSoup не смог правильно интерпретировать формат, возвращаемый requests.get(url).content. С requests.get мало что можно сделать, может, попробуйте использовать html.parser в качестве парсера и посмотреть, сработает ли это?
Я решил проблему. Но я не знаю, как ... я немного почистил и удалил все пакеты python Запросы и urllib3 ... затем я переустановил все с помощью подходящий, и теперь все работает ... не спрашивайте меня, как ... но теперь все работает отлично ! Спасибо за терпение и добрый вечер (из Италии).
Извините ... Неправильно написал ... но проблема осталась. Прочтите пожалуйста еще раз ... Я поправил пост