python使用正则提取html文本内容,多段匹配如何获取所有结果

在对网页数据清洗的时候遇到,如果在一段html文本中,有多个目标对象,如何将内容都提取出来。

比如下面一段内容

<span style="mso-spacerun:'yes';font-family:宋体;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-bidi-font-family:'Times new roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;">
<font face="宋体">我们信步走进了一家乡村气息浓郁的小院子,小院里干净利落。院子中整齐地挂满了金黄的玉米,连玉米骨头都码得整整齐齐的,红红的辣椒挂在门口两侧,鸡狗猫等正悠闲地在庭院中散步,鸡屋子上有两个鸡窝,其中一个鸡窝里正好有一枚鸡蛋,还有,绣球花等各色花儿开得正艳</font>……小院的主人已都是八十多岁高龄,男主人八十三岁,女主人八十五岁,他们还正在扒着玉米,见我们闯进院子,非但不紧张,倒是很热情,邀我们落座,还打算给我们倒热水,我们连连推辞才罢。两位老人,不紧不慢,却也一直不停歇,听他们说,现在儿孙们大都已独立,也算有出息。看到这么干净利落,充满温馨生活气息的小院,一定是老人们的生活充满追求又富有情趣,才创造了这一切的美好。</span>

想提取出其中的汉字部分。

目前的方案

使用正则表达式全匹配,具体代码如下(部分截取):

import re
s = '''
<span style="mso-spacerun:'yes';font-family:宋体;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-bidi-font-family:'Times new roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;">
<font face="宋体">我们信步走进了一家乡村气息浓郁的小院子,小院里干净利落。院子中整齐地挂满了金黄的玉米,连玉米骨头都码得整整齐齐的,红红的辣椒挂在门口两侧,鸡狗猫等正悠闲地在庭院中散步,鸡屋子上有两个鸡窝,其中一个鸡窝里正好有一枚鸡蛋,还有,绣球花等各色花儿开得正艳</font>……小院的主人已都是八十多岁高龄,男主人八十三岁,女主人八十五岁,他们还正在扒着玉米,见我们闯进院子,非但不紧张,倒是很热情,邀我们落座,还打算给我们倒热水,我们连连推辞才罢。两位老人,不紧不慢,却也一直不停歇,听他们说,现在儿孙们大都已独立,也算有出息。看到这么干净利落,充满温馨生活气息的小院,一定是老人们的生活充满追求又富有情趣,才创造了这一切的美好。</span>
'''
rs = re.findall(r'(?<=(>))[\d\D]*?(?=(<))', s, re.M)
for item in rs:
    print item

结果

输出如下,并非自己想要的结果

('>', '<')
('>', '<')
('>', '<')
阅读 6.3k
1 个回答

不要用正则, BeautifulSoup处理html要好上很多

from bs4 import BeautifulSoup
s = '''
<span style="mso-spacerun:'yes';font-family:宋体;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-bidi-font-family:'Times new roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;">
<font face="宋体">我们信步走进了一家乡村气息浓郁的小院子,小院里干净利落。院子中整齐地挂满了金黄的玉米,连玉米骨头都码得整整齐齐的,红红的辣椒挂在门口两侧,鸡狗猫等正悠闲地在庭院中散步,鸡屋子上有两个鸡窝, 其中一个鸡窝里正好有一枚鸡蛋,还有,绣球花等各色花儿开得正艳</font>……小院的主人已都是八十多岁高龄,男主人八十三岁,女主人八十五岁,他们还正在扒着玉米,见我们闯进院子,非但不紧张,倒是很热情,邀我们落座,还打算给我们倒热水,我们连连推辞才罢。两位老人,不紧不慢,却也一直不停歇,听他们说,现在儿孙们大都已独立,也算有出息。看到这么干净利落,充满温馨生活气息的小院,一定是老人们的生活充满追求又富有情趣,才创造了这一切的美好 。</span>
'''
clean_text = BeautifulSoup(s,"lxml").get_text()
print(clean_text)

输出

我们信步走进了一家乡村气息浓郁的小院子,小院里干净利落。院子中整齐地挂满了金黄的玉米,连玉米骨头都码得整整齐齐的,红红的辣椒挂在门口两侧,鸡狗猫等正悠闲地在庭院中散步,鸡屋子上有两个鸡窝,其中一个鸡窝里正好有一枚鸡蛋,还有,绣球花等各色花儿开得正艳……小院的主人已都是八十多岁高龄,男主人八十三岁,女主人八十五岁,他们还正在扒着玉米,见我们闯进院子,非但不紧张,倒是很热情,邀我们落座,还打算给我们倒热水,我们连连推辞才罢。两位老人,不紧不慢,却也一直不停歇,听他们说,现在儿孙们大都已独立,也算有出息。看到这么干净利落,充满温馨生活气息的小院,一定是老人们的生活充满追求又富有情趣,才创造了这一切的美好。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题