提取xml格式新闻内容
来源:互联网 发布:淘宝联盟和淘客联盟 编辑:程序博客网 时间:2024/06/03 06:55
最开始解决方案有两种:
1) 使用正则表达式,匹配xml格式中的所有中文字符。
2) 使用BeautifulSoup的get_text()方法提取新闻内容
第一种方法,在进行中,后面更新
本文只展示第二种方法,因为无意之间发现了这个方法,简直不要太方便。
以下是初始文本,文本比较长,只展示了部分:
<?xml version="1.0" encoding="UTF-8"?><Body> <Title>成都网友称震感强烈 女同事当即哭泣</Title> <ReportTime type="absTime">2008年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">2008年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">2008年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成都网友称震感强烈 女同事当即哭泣\n2008年05月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(' ','')
输出结果如下 '成都网友称震感强烈 女同事当即哭泣2008年05月12日16:15 5月12日14时28分,四川发生7.8级地震。15时50分,新民网记者网上连线成都网友姚先生。姚先生当时正在成都市武侯区的办公室打电话,突然感觉电脑显示器晃得很厉害, 便丢下电话、 抓起手机和钱包往外跑,手里还拿着无绳电话子机,准备给远在江苏的家人打电话。姚先生说坐在他旁边的女同事立刻感觉是在地震,一下子哭了起来。据姚先生介绍,成都市很多钢结构的房屋都有明显震感,当他和很多市民一样疏散到室外时,随即发现手机信号已经中断,据称基站坏了。疏散出来的人群中,大家都在谈论唐山大地震。姚先生向新民网记者称, 据一些成都市民说,成都的伊藤洋华堂武侯店倒塌。'
如上:然后我们已经提取到完整的新闻内容,格式比较规整,符合要求,以下就可以继续进行新闻内容的分析。
寻找方法的过程都是痛苦的,做的时候,其实倒腾了挺久,成功之后才是喜悦。
阅读全文
0 0
- 提取xml格式新闻内容
- 精确提取新闻内容
- Thinking XML: 使用 Atom 格式连锁新闻及其他内容
- 搜狗新闻语料库 python正则表达式 新闻内容提取
- 文本文件内容按格式提取
- [XML学习笔记][2.2]XML内容提取
- 提取灵格斯里ld2格式词典的内容
- c语言提取xml文件内容
- xml文件内容编辑及提取
- 提取新闻地点
- Java获取xml格式字段内容
- java发送http,内容为xml格式
- XML 新闻
- 提取xml文档的内容到.txt文件中
- java通过正则表达式提取XML节点内容
- java通过正则表达式提取XML节点内容
- LR对XML格式的字符串的提取方法
- html自定义属性后怎么以xml格式提取出来
- thinkphp 5 闭包函数的使用详解
- Python code 提取UML
- 批量梯度下降法BGD,随机梯度下降法SGD
- mysql获取group by的总记录行数方法
- 三星C8将于9月7日发布,售价仅1999?
- 提取xml格式新闻内容
- 牛客网C++知识点整理(持续更新)
- 90个PHP常用接口数据过滤的方法
- 莫队算法 区间Gcd Hdu 5381
- ajax学习
- com.netflix.zuul.exception.zuulexception timeout
- activiti部署、执行,完成简单示例
- TensorFlow下载与安装(Ubuntu)
- RobotFramework之关键字