我有一个年份列表,如下所示:
year = ['2005', '2006', '2007', '2008', '2009', '2010', '2011', '2012', '2013']
我正在尝试创建包含在另一个预先存在的标签中的一系列XML标签,如下所示:
<intro>
<exposures>
<exposure year = "2005"></exposure>
<exposure year = "2006"></exposure>
<exposure year = "2007"></exposure>
<exposure year = "2008"></exposure>
etc.
<exposures>
</intro>
稍后,我将填充标签中的内容。现在,我正在尝试遍历year
并将其添加到标签中,然后将其包含在标签中。
我一直在尝试遍历“年份”列表,并将每个值作为属性附加到标签上:
testsoup = BeautifulSoup(testxml, 'xml')
intro_tag = testsoup.intro('intro')
exp_tag = testsoup.exposures('exposures')
year = ['2005', '2006', '2007', '2008', '2009', '2010', '2011', '2012', '2013']
exposure_tag = testsoup.new_tag('exposure', year = '')
for x in year:
exposure_tag['year'] = x
exp_tag.append(exposure_tag)
intro_tag.append(exp_tag)
不幸的是,这似乎只是将最后一个值附加在列表中:
<intro><exposures><exposure year="2013"/></exposures></intro>
这只是BeautifulSoup的功能吗?您只能添加一个标签,不能添加多个标签吗?我正在使用BeautifulSoup 4.4.0。
顺便说一句,BeautifulSoup是做到这一点的最佳方法吗?我看到很多帖子都赞扬BS4和lxml的webscraping功能,但似乎都不对生成XML有用(这不是一件坏事,只是我注意到的事情)。是否有更好的软件包来自动化XML生成?
我怀疑问题是此行:exposure_tag = testsoup.new_tag('exposure', year = '')
。您有一个标签,并且试图多次将其附加到同一父对象。试试这个吧。
for x in year:
exposure_tag = testsoup.new_tag('exposure', year = x)
exp_tag.append(exposure_tag)
intro_tag.append(exp_tag)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句