我正试图从一个叫做 XML
文件从 Python
与 ElementTree
,却找不到它。
XML代码。
<item>
<id>12345678</id>
<subs>
<sub category="A">
<name>Name 1 text</name>
<file>File 1 text</file>
</sub>
<sub category="B">
<name>Name 2 text</name>
<file>File 2 text</file>
</sub>
</subs>
<number>Number text</number>
<title>Title text</title>
</item>
我想读取 file
标签文本。
Python代码。
import urllib2
import ElementTree as ET
root = ET.ElementTree(file=urllib2.urlopen('http://..../filename.jsp?id=12345678')).getroot()
if __name__ == '__main__':
for subtags in root.findall('sub'):
filetext = subtags.find('file').text
print(filetext)
输出应该是这样的
> File 1 text
> File 2 text
但是,我得到的输出是什么都没有(空白),然后,10秒钟后,程序停止运行,没有得到任何错误。
我已经尝试过用其他的标签,如 XML
和 行得通.
谢谢。
findall
如果你给了它标签名,则只查找直系子孙。
你可以用 XPath
这样的查询。
root.findall('.//sub')
试试这个,仅供参考
from simplified_scrapy import SimplifiedDoc,utils,req
html = '''<item>
<id>12345678</id>
<subs>
<sub category="A">
<name>Name 1 text</name>
<file>File 1 text</file>
</sub>
<sub category="B">
<name>Name 2 text</name>
<file>File 2 text</file>
</sub>
</subs>
<number>Number text</number>
<title>Title text</title>
</item>'''
doc = SimplifiedDoc(html)
files = doc.selects('sub').file.text
print(files)
结果:
['File 1 text', 'File 2 text']