beautifulsoupxmlpython从特定标记中提取属性
此XML文档包含一组标记beautifulsoupxmlpython从特定标记中提取属性,python,xml,beautifulsoup,Python,Xml,Beautifulsoup,此XML文档包含一组标记事件数据。我想从最近的事件数据中提取信息。例如,在下面的代码中,我想转到最后一个事件数据标记,转到事件日期标记并提取日期子标记的文本。目前,我正在使用Python中的BeautifulSoup遍历此文档。有什么想法吗 <?xml version="1.0" encoding="UTF-8"?> <first-tag> <second-tag> <events-da
事件数据
。我想从最近的事件数据中提取信息。例如,在下面的代码中,我想转到最后一个事件数据
标记,转到事件日期
标记并提取日期
子标记的文本。目前,我正在使用Python中的BeautifulSoup遍历此文档。有什么想法吗
<?xml version="1.0" encoding="UTF-8"?>
<first-tag>
<second-tag>
<events-data>
<event-date>
<date>20040913</date>
</event-date>
</events-data>
<events-data> #the one i want to traverse to grab date text
<event-date>
<date>20040913</date>
</event-date>
</events-data>
</second-tag>
</first-tag>
20040913
#我想遍历它来获取日期文本
20040913
这是使用BeautifulSoup 3
import os
import sys
# Import Custom libraries
from BeautifulSoup import BeautifulStoneSoup
xml_str = \
'''
<?xml version="1.0" encoding="UTF-8"?>
<first-tag>
<second-tag>
<events-data>
<event-date>
<date>20040913</date>
</event-date>
</events-data>
<events-data>
<event-date>
<date>20040913</date>
</event-date>
</events-data>
</second-tag>
</first-tag>
'''
soup = BeautifulStoneSoup(xml_str)
event_data_location = lambda x: x.name == "events-data"
events = soup.findAll(event_data_location)
if(events):
# The last event-data
print events[-1].text
导入操作系统
导入系统
#导入自定义库
从BeautifulSoup导入BeautifulstoneSoop
xml_str=\
'''
20040913
20040913
'''
soup=BeautifulStoneSoup(xml_str)
事件\数据\位置=lambda x:x.name==“事件数据”
events=soup.findAll(事件数据位置)
如果(事件):
#最后一个事件数据
打印事件[-1]。文本
我在想,比如在elementtree
或minidom
中,您可以根据索引和长度遍历标记,但我想不出一种语法(或找到一种语法)适用于BeautifulSoup。请记住,我对beautifulsoup还是新手。不知何故,它必须计算事件数据发生的次数,可能是通过numEvents=len(soup.find('events-data'))
,然后读取该索引处的子标记?这工作非常完美,谢谢!但是如果再提出一个请求,比如说在事件日期中有更多的标签,人们会如何获取这些标签呢?我觉得这就像是打印事件[-1].text(…另一个标记…)
哦,没关系,我只会对每个子标记使用它+谢谢你,巴德!