1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 提取xml格式新闻内容

提取xml格式新闻内容

时间:2021-01-24 20:32:30

相关推荐

提取xml格式新闻内容

最开始解决方案有两种:

1) 使用正则表达式,匹配xml格式中的所有中文字符。

2) 使用BeautifulSoup的get_text()方法提取新闻内容

第一种方法,在进行中,后面更新

本文只展示第二种方法,因为无意之间发现了这个方法,简直不要太方便。

以下是初始文本,文本比较长,只展示了部分:

<?xml version="1.0" encoding="UTF-8"?><Body> <Title>成都网友称震感强烈 女同事当即哭泣</Title> <ReportTime type="absTime">05月12日16:15</ReportTime> <Content> <Paragraph> <Sentence> <Event eid="e1"><Time type="relTime" tid="t1">5月12日14时28分</Time>,<Location lid="l1">四川</Location>发生7.8级<Denoter type="emergency" did="d1">地震</Denoter>。</Event> </Sentence> </Paragraph> <Paragraph> <Sentence> <Event eid="e2"><Time type="absTime" tid="t2">15时50分</Time>,新民网<Participant sid="s1">记者</Participant>网上<Denoter type="action" did="d2">连线</Denoter>成都网友<Participant oid="o2">姚先生</Participant></Event>。</Sentence> <Sentence> <Event eid="e3"><Participant sid="s3,s4,s6,s7,s8,s9,s10">姚先生</Participant><Time type="relTime" tid="t3">当时</Time>正在<Location lid="l3">成都市武侯区的办公室</Location><Denoter type="action" did="d3">打电话</Denoter>,</Event> <Event eid="e4" type="thoughtevent">突然<Denoter type="statement" did="d4">感觉</Denoter></Event>

只提取标签中的文本,使用BeautifulSoup库提取当中的内容:

from bs4 import BeautifulSoup as bsf = open(r"C:\Users\zss0330816\Desktop\成都网友称震感强烈女同事当即哭泣.xml",encoding = 'utf-8')data = f.read()data#获取到数据

结果如下:

1)格式杂乱无章,

'<?xml version="1.0" encoding="UTF-8"?>\n\n<Body> \n\t<Title>成都网友称震感强烈 女同事当即哭泣</Title> \n\t<ReportTime type="absTime">05月12日16:15</ReportTime> \n\t<Content>\u3000 \n\t\t<Paragraph> \n\t\t\t<Sentence> \n\t\t\t\t<Event eid="e1">\n\t\t\t\t\t<Time type="relTime" tid="t1">5月12日14时28分</Time>,\n\t\t\t\t\t<Location lid="l1">四川</Location>发生7.8级\n\t\t\t\t\t<Denoter type="emergency" did="d1">地震</Denoter>。\n\t\t\t\t</Event> \n\t\t\t</Sentence> \n\t\t</Paragraph> \n\t\t<Paragraph> \n\t\t\t<Sentence> \n\t\t\t\t<Event eid="e2">\n\t\t\t\t\t<Time type="absTime" tid="t2">15时50分</Time>,新民网\n\t\t\t\t\t<Participant sid="s1">记者</Participant>网上\n\t\t\t\t\t<Denoter type="action" did="d2">连线</Denoter>成都网友\n\t\t\t\t\t<Participant oid="o2">姚先生</Participant>\n\t\t\t\t</Event>。\n\t\t\t</Sentence> \n\t\t\t<Sentence> \n\t\t\t\t<Event eid="e3">\n\t\t\t\t\t<Participant sid="s3,s4,s6,s7,s8,s9,s10">姚先生</Participant>\n\t\t\t\t\t<Time type="relTime" tid="t3">当时</Time>正在\n\t\t\t\t\t<Location lid="l3">成都市武侯区的办公室</Location>\n\t\t\t\t\t<Denoter type="action" did="

然后使用这个方法以后

soup = bs(data,'lxml')#soup把杂乱的数据变得比较规整soup

这里输出的格式,和文本最初的格式是一致的

<?xml version="1.0" encoding="UTF-8"?><html><body><title>成都网友称震感强烈 女同事当即哭泣</title><reporttime type="absTime">05月12日16:15</reporttime><content> <paragraph><sentence><event eid="e1"><time tid="t1" type="relTime">5月12日14时28分</time>,<location lid="l1">四川</location>发生7.8级<denoter did="d1" type="emergency">地震</denoter>。</event></sentence></paragraph>

soup.get_text()

Out[7]:'\n成都网友称震感强烈 女同事当即哭泣\n05月12日16:15\n\u3000 \n\t\t\n\n\n5月12日14时28分,\n\t\t\t\t\t四川发生7.8级\n\t\t\t\t\t地震。\n\t\t\t\t\n\n\n\n\n\n15时50分,新民网\n\t\t\t\t\t记者网上\n\t\t\t\t\t连线成都网友\n\t\t\t\t\t姚先生\n。\n\t\t\t\n\n\n姚先生\n当时正在\n\t\t\t\t\t成都市武侯区的办公室\n打电话,\n\t\t\t\t\n突然\n\t\t\t\t\t感觉\n\n\n电脑显示器\n晃得很厉害\n\t\t\t\t, \n\t\t\t\t便\n\t\t\t\t\t丢下\n电话\n、 \n\t\t\t\t\n抓起\n手机和\n\t\t\t\t\t钱包\n\n往外\n\t\t\t\t\t跑,\n\t\t\t\t\n手里还\n\t\t\t\t\t拿着\n\t\t\t\t\t无绳电话子机,\n\t\t\t\t\n准备给远在江苏的\n\t\t\t\t\t家人\n打电话。\n\t\t\t\t\n\n\n\n\n\n姚先生\n说\n\n坐在他旁边的\n\t\t\t\t\t女同事立刻\n\t\t\t\t\t感觉是在地震,\n\t\t\t\t\n一下子\n\t\t\t\t\t哭了起来。\n\t\t\t\t\n\n\n据\n\t\t\t\t\t姚先生\n介绍,\n\t\t\t\t\n成都市很多钢结构的\n\t\t\t\t\t房屋都有明显\n\t\t\t\t\t震感,\n\t\t\t\t\n当\n\t\t\t\t\t他和\n\t\t\t\t\t很多市民一样\n\t\t\t\t\t疏散到\n\t\t\t\t\t室外时,\n\t\t\t\t\n随即\n\t\t\t\t\t发现\n\n\n手机信号已经\n\t\t\t\t\t中断\n,据称基站坏了。\n\t\t\t\n\n疏散出来的人群中,\n\t\t\t\t\t大家都在\n\t\t\t\t\t谈论唐山大地震。\n\t\t\t\t\n\n\n\n\n\n姚先生向\n\t\t\t\t\t新民网记者\n称\n, \n\t\t\t\t据\n\t\t\t\t\t一些成都市民\n说,\n\t\t\t\t\n成都的\n\t\t\t\t\t伊藤洋华堂武侯店\n倒塌。\n\t\t\t\t\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n'

我们发现有很多的格式,比较乱,使用字符串替换的方法,把文本中存在的“空格 \n\t \u3000”等字符替换掉,

#\u3000->表示的是:中文(全角)空格 \uxxx 其中xxxx表示一个16进制数字 这种格式是unicode码的写法表示一个char字符result.replace('\n','').replace('\t','').replace('\u3000',''),replace(' ','')

输出结果如下

'成都网友称震感强烈 女同事当即哭泣05月12日16:15 5月12日14时28分,四川发生7.8级地震。15时50分,新民网记者网上连线成都网友姚先生。姚先生当时正在成都市武侯区的办公室打电话,突然感觉电脑显示器晃得很厉害, 便丢下电话、 抓起手机和钱包往外跑,手里还拿着无绳电话子机,准备给远在江苏的家人打电话。姚先生说坐在他旁边的女同事立刻感觉是在地震,一下子哭了起来。据姚先生介绍,成都市很多钢结构的房屋都有明显震感,当他和很多市民一样疏散到室外时,随即发现手机信号已经中断,据称基站坏了。疏散出来的人群中,大家都在谈论唐山大地震。姚先生向新民网记者称, 据一些成都市民说,成都的伊藤洋华堂武侯店倒塌。'

如上:然后我们已经提取到完整的新闻内容,格式比较规整,符合要求,以下就可以继续进行新闻内容的分析。

寻找方法的过程都是痛苦的,做的时候,其实倒腾了挺久,成功之后才是喜悦。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。