2014-10-20 173 views
1

我试图提取2个数据:1)选项元素的“值”属性的值(即下面的“01000.html”)。 2)​​3210标签(即“阿拉巴马州”)内的字符串。有创建的结果集列表对象有限的信息与我使用操作BeautifulSoup的ResultSet列表对象

url = 'http://quickfacts.census.gov/qfd/states/' page = urllib2.urlopen(url) soup = BeautifulSoup(page) state_list = soup.find_all("option")

从美国人口普查QFD页面的下拉菜单中(本身就是一个使用这些选项元素)提取状态列表。

大图,我试图通过一个简单的i计数器在美国的所有县循环,但显然县和国家没有统一编号。因此,我试图建立这些选项的列表,以便遍历“状态(字符串)”的“值”(其成为URL的一部分)属性。

state_list 

[<option value="01000.html">Alabama</option>, 
<option value="02000.html">Alaska</option>, 
<option value="04000.html">Arizona</option>, 
<option value="05000.html">Arkansas</option>, 
<option value="06000.html">California</option>, 
<option value="08000.html">Colorado</option>, 
<option value="09000.html">Connecticut</option>, 
<option value="10000.html">Delaware</option>, 
<option value="11000.html">District of Columbia</option>, 
<option value="12000.html">Florida</option>, 
<option value="13000.html">Georgia</option>, 
<option value="15000.html">Hawaii</option>, 
<option value="16000.html">Idaho</option>, 
<option value="17000.html">Illinois</option>, 
<option value="18000.html">Indiana</option>, 
<option value="19000.html">Iowa</option>, 
<option value="20000.html">Kansas</option>, 
<option value="21000.html">Kentucky</option>, 
<option value="22000.html">Louisiana</option>, 
<option value="23000.html">Maine</option>, 
<option value="24000.html">Maryland</option>, 
<option value="25000.html">Massachusetts</option>, 
<option value="26000.html">Michigan</option>, 
<option value="27000.html">Minnesota</option>, 
<option value="28000.html">Mississippi</option>, 
<option value="29000.html">Missouri</option>, 

(etc...) 
+2

比尔Letson有正确的答案你问的问题,但这些都是[FIPS代码(http://en.wikipedia.org/wiki/Federal_Information_Processing_Standard_state_code)。从[这个EPA页面](http://www.epa.gov/enviro/html/codes/state.html)的代码,并添加'000'到最后,你有国家代码。 (同样的EPA页面链接到特定国家的页面,每个县都有最后三位数字(例如,29(密苏里州)+ 019(布恩县)= 29019(布恩县,密苏里州))。我还投掷了[this ](https://gist.github.com/myersjustinc/1233434)几年前一起,以防万一。 – myersjustinc 2014-10-20 02:43:58

+0

哇,真棒。非常感谢! – d8aninja 2014-10-20 02:44:50

回答

3

您可以提取标签属性(如字典),并使用.text属性访问文本。

for state in state_list: 
    print state['value'].split(".")[0], state.text 
+0

经过一天的思考之后,我得说,作为一个相对刚刚接受编程的人(<1岁),这是一个非常好的答案。它简明扼要,完全符合我的想法,并提醒我始终应用KISS原则。 – d8aninja 2014-10-20 23:16:11