【发布时间】:2014-01-02 22:05:01
【问题描述】:
我正在使用 BeautifulSoup4(带有 lxml 解析器)来解析如下所示的 xml:
<?xml version="1.0" encoding="UTF-8" ?>
<data>
<metadata id="8735180" name="Dauphin Island" lat="30.2500" lon="-88.0750"/>
<observations>
<wl t="2013-12-14 00:00" v="0.725" s="0.059" f="0,0,0,0" q="v" />
<wl t="2013-12-14 00:06" v="0.771" s="0.066" f="0,0,0,0" q="v" />
<wl t="2013-12-14 00:12" v="0.764" s="0.085" f="0,0,0,0" q="v" />
....等
python代码是这样的:
obs_soup = BeautifulSoup(urllib2.urlopen('http://tidesandcurrents.noaa.gov/api/datagetter?product=water_level&application=NOS.COOPS.TAC.WL&begin_date=20131214&end_date=20131216&datum=MSL&station=8735180&time_zone=GMT&units=english&interval=&format=xml),'lxml')
for l in obs_soup.findall('wl'):
obs.append(l['v'])
我不断收到错误:
for l in obs_soup.findall('wl'):
TypeError: 'NoneType' object is not callable
我尝试了here 的解决方案(除了不是寻找“html”,而是寻找“数据”),但这不起作用。有什么建议吗?
【问题讨论】:
-
您的代码,如发布的那样,甚至还不足以产生该错误,因为构造
obs_soup的行中有一个SyntaxError来自缺少的引号。请发布SSCCE 而不仅仅是与您的实际代码模糊相似的代码;它使调试变得更加容易。
标签: python xml beautifulsoup