操作BeautifulSoup的ResultSet列表对象

时间:2014-10-20 02:31:55

标签: python beautifulsoup scraper

我试图提取2个数据:1)选项元素的“值”属性的值(即下面的“01000.html”)。 2)<option></option>标签内的字符串(即“Alabama”)。使用

创建的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 个答案:

答案 0 :(得分:4)

您可以像字典一样提取标记属性,并使用.text属性访问该文本。

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

答案 1 :(得分:0)

由于迭代是最有可能的解决方案,因此我们可以使用简单的单个衬里将对象转换为字典或列表列表。

DiCt = {state.text: state['value'] for state in state_list}
LofLists = [[state.text, state['value']] for state in state_list]