【发布时间】:2017-06-04 14:14:53
【问题描述】:
我想从 JATS XML 中获取图像及其描述。在我的示例中,我使用http://journal.frontiersin.org/article/10.3389/fpls.2011.00008/xml/nlm
这些数字的格式如下:
<fig id="F1" position="float">
<label>Figure 1</label>
<caption><p><bold>Pathways of DSB misrepair...</p></caption>
<graphic xlink:href="fpls-02-00008-g001.tif"/>
</fig>
我想同时获取每个图形的<caption>...</caption> 和<graphic xlink:href="..."/> 的内容。
所以我的想法是使用 BeautifoulSoup 的 css 选择器并在打印时剥离 html 标签:
#!/usr/bin/python
from bs4 import BeautifulSoup
import urllib.request
content = urllib.request.urlopen('file:///tmp/fpls-02-00008.xml').read()
soup = BeautifulSoup(content, 'xml')
##<fig><caption>XXX</caption></fig>
caption = soup.select("fig caption")
##<fig><graphic xlink:href="YYY"/></fig>
graphic = soup.select("fig graphic")
for a in caption:
print(a.get_text().strip())
#print(b.get_text()) doesn't work
for b in graphic:
print(b)
#separator = "|"
#print(separator.join([caption, graphic]))
仅获取标题或仅获取图形有效,但由于来源不一致,我需要同时获取两者。结果不应该是
- 标题A
- 标题 B
- 图形A
- 图形 B
而是
- 标题 A,图形 A
- 标题 B,图形 B
我如何实现这一目标?提前致谢!
【问题讨论】:
标签: python xml beautifulsoup