2014-10-20 80 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