Как получить тег <text>из HTML-документа, используя красивый суп - PullRequest
2 голосов
/ 26 июня 2019

Как я могу получить тег <text> из HTML-документа, используя красивый суп для Abbot lab 10k подачи

Я хочу извлечь имена тегов всех дочерних элементов тега <text></text>, используя приведенный ниже код

from bs4 import BeautifulSoup
import urllib.request
url ='https://www.sec.gov/Archives/edgar/data/1800/000104746919000624/a2237733z10-k.htm'
htmlpage = urllib.request.urlopen(url)
soup = BeautifulSoup(htmlpage, "html.parser")
all_text = soup.find('text')
all_tags = all_text.contents
all_tags = [x.name for x in all_tags if x.name is not None]
print(all_tags)

но кое-как вывод, который я получаю для приведенного выше кода, ['html'].

Ожидаемый результат:
['p','p','p','p','p','p','div','div','font','font', etc......]

Ответы [ 2 ]

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

Вы можете использовать селектор CSS (для печати все дочерние элементы текста тега):

for child in all_text.select('text *'):
    print(child.name, end=' ')

Печать:

br p font font b p font b br p font b div div ...

РЕДАКТИРОВАТЬ: только для печати прямой дочерний текст тега, вы можете использовать:

from bs4 import BeautifulSoup
import requests

url ='https://www.sec.gov/Archives/edgar/data/1800/000104746919000624/a2237733z10-k.htm'

htmlpage = requests.get(url)
soup = BeautifulSoup(htmlpage.text, "lxml")

for child in soup.select('text > *'):
    print(child.name, end=' ')
0 голосов
/ 26 июня 2019

Замените ваш код:

all_tags = all_text.contents
all_tags = [x.name for x in all_tags if x.name is not None]
print(all_tags)

TO:

all_tags = [x.name for x in all_text.findChildren() if x.name is not None]
print(all_tags)

findChildren () подробнее

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