【发布时间】:2018-10-23 13:40:18
【问题描述】:
我有一份来自 Beautiful Soup 的清单,如下所示。
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>
]
我需要删除除 Cinema、Theatre 之外的文本。
我想出了下面的表达式,但我不能将它应用到列表中
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>',''))
但我收到此错误: TypeError:+ 的不支持的操作数类型:“NoneType”和“int”
【问题讨论】:
-
嗯,那个错误是说
x.find('<br/><br/>')没找到任何东西 -
如果我手动将列表元素之一复制/粘贴到字符串 x 我的表达式有效。
-
也许其他区域字符串之一没有两个中断?
-
我建议实际解析文本而不是寻找子标签。 stackoverflow.com/q/23380171/2308683
-
我不能因为文本被合并 - 我需要将标签和文本转储到一个普通列表中,以便我可以操作数据。有什么想法吗?
标签: python html beautifulsoup