API请求:http://iss.ndl.go.jp/api/opensearch?isbn=9784334770051
我需要从上面通过API提供的XML中获取一个特定值。
我尝试专门从<item>
和<dc:title>
的值中获取所有值
以下是我目前的代码,我试图从项目中获取所有价值,但没有工作。
import codecs
import sys
import urllib
import urllib2
import re, pprint
from xml.etree.ElementTree import *
import csv
from xml.dom import minidom
import xml.etree.ElementTree as ET
errorCheck = "0"
isbn = raw_input("Enter IBSN Number Please ")
isIsbn = len(isbn)
if isIsbn == 10 or isIsbn == 13:
errorCheck = 1;
url = "http://iss.ndl.go.jp/api/opensearch?isbn=%s" % isbn
req = urllib2.Request(url)
response = urllib2.urlopen(req)
XmlData = response.read()
root = ET.fromstring(XmlData)
print(root.tag,root.attrib)
for child in root.find('item'):
print child.tag
print child.attrib
print child.text
if errorCheck == "0":
print "It is not ISBN"
答案 0 :(得分:1)
<item>
不是根元素的直接子元素,因此您无法通过直接提及元素(root.find('item')
)来找到它。您可以使用.//item
在根目录中的任何位置查找item
元素:
for child in root.find('.//item'):
或指定从根到<item>
的确切路径:
for child in root.find('channel/item'):
至于查找<dc:title>
元素,请参阅:Parsing XML with namespace in Python via 'ElementTree'