我想深入了解一些统计数据,并编写一些代码。
import urllib2
import HTMLParser
response = urllib2.urlopen('http://www.eia.gov/dnav/pet/hist/LeafHandler.ashx?n=PET&s=MCESTUS1&f=M')
data = response.read()
class TableParser(HTMLParser.HTMLParser):
def __init__(self):
HTMLParser.HTMLParser.__init__(self)
self.in_td = False
def handle_starttag(self, tag, attrs):
if tag == 'td':
self.in_td = True
def handle_data(self, data):
if self.in_td:
print data
def handle_endtag(self, tag):
self.in_td = False
p = TableParser()
raw_data = p.feed(data)
raw_list = []
for string in raw_data:
raw_list.append(string)
print raw_list
此脚本的一些输出/
2015
421,472
448,039
474,815
483,379
479,335
469,539
455,470
457,810
460,786
486,700
-
Release Date: 12/31/2015
Next Release Date: 1/29/2016
Traceback (most recent call last):
File "FirstData.py", line 28, in <module>
for string in raw_data:
TypeError: 'NoneType' object is not iterable
这项工作,但我不能首先遍历Nonetype对象。
第二,我如何将这些数据放入大熊猫的月份和数量的图表中?
答案 0 :(得分:0)
看起来解析器解析但您需要通过除p.feed(data)
的返回值以外的其他方法从解析器中获取数据,因为它始终是None
。如何将它累积在作为解析器对象属性的列表中:
import urllib2
import HTMLParser
response = urllib2.urlopen('http://www.eia.gov/dnav/pet/hist/LeafHandler.ashx?n=PET&s=MCESTUS1&f=M')
data = response.read()
class TableParser(HTMLParser.HTMLParser):
def __init__(self):
HTMLParser.HTMLParser.__init__(self)
self.in_td = False
self.raw_data = []
def handle_starttag(self, tag, attrs):
if tag == 'td':
self.in_td = True
def handle_data(self, data):
if self.in_td:
print data
self.raw_data.append(data)
def handle_endtag(self, tag):
self.in_td = False
p = TableParser()
p.feed(data)
print p.raw_data
未测试。