Извлечение текста HTML - PullRequest
0 голосов
/ 14 мая 2018

У меня есть список из «Прекрасного супа», как показано ниже.

soup = BeautifulSoup(page.content, 'html.parser')
area = soup.select("td strong")

Например,

area=[
<strong><span style="font-size:1.4em;">120 Beats Per Minute (15)</span><br/><br/>Cinema</strong>, 
<strong><span style="font-size:1.4em;">A Little Night Music</span><br/><br/>Theatre</strong>, 
<strong><span style="font-size:1.4em;">A Wrinkle in Time (PG)</span><br/><br/>Cinema</strong>
]

Мне нужно избавиться от текста, кроме Кино, Театра.

Я пришел с приведенным ниже выражением, но не могу применить его к списку

x[x.find('<br/><br/>')+10:].replace('</strong>','')

Любые идеи, как применить это выражение для извлечения данных из списка, чтобы создать новоесписок?Я пробовал это:

clean_area=[]
for x in area:
   clean_area.append(x[x.find('<br/><br/>')+10:].replace('</strong>',''))

Но я получаю эту ошибку: Ошибка типа: неподдерживаемые типы операндов для +: 'NoneType' и 'int'

Ответы [ 3 ]

0 голосов
/ 14 мая 2018

То, что вы хотите использовать, это decompose, это удалит любые теги, которые вы не хотите.

В данном случае это span

так

for x in soup.findAll("span"):
    x.decompose()

print(soup.text)

1010 * возвращается *

Cinema, Theatre

0 голосов
/ 14 мая 2018

Я мог заставить работать только 2 прохода Я уверен, что это не самый лучший способ, но он, по крайней мере, работает.

soup = BeautifulSoup(result.content, "html.parser")

for x in soup.findAll("span"):
    x.decompose()

area = soup.select("td strong")

a = str(area)
soup2 = BeautifulSoup(a)



tr = []
for tag in soup2.find_all(True):
    tr.append(tag.text)


clean_area = [] 
for i in tr[::3]:
    clean_area.append(i)
0 голосов
/ 14 мая 2018

Я отвечал на ваш первый пост около часа назад, но вы удалили его.

Я не уверен, что это лучший способ сделать это, но вот что я придумал:

text = [
"""<strong><span style="font-size:1.4em;">120 Beats Per Minute (15)</span><br/><br/>Cinema</strong>""", 
"""<strong><span style="font-size:1.4em;">A Little Night Music</span><br/><br/>Theatre</strong>""", 
"""<strong><span style="font-size:1.4em;">A Wrinkle in Time (PG)</span><br/><br/>Cinema</strong>"""
]

text = ''.join(text) #Converting list of strings to one string

start = "<br/><br/>" #Start indication
end = "</" #End indication

clean_area = []

index = 0
while index < len(text):
    index = text.find(start, index)
    if index == -1:
        break
    clean_area.append(text[index+len(start):text.find(end, index)])
    index += len(start)

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