第一个爬虫

小组名称:chengjun

In [30]:
print range(5)
[0, 1, 2, 3, 4]
In [29]:
for i in range(5):
    print i
0
1
2
3
4

大家好,欢迎使用ipython notebook来完成我们的编程作业。开始之前,请确保已经安装好beautifulsoup。

1. 抓取学院新闻

In [32]:
import urllib2#调用urllib2  
from bs4 import BeautifulSoup
import os
In [40]:
# set work directory 
# 注意请调整以下路径名为你想要的路径
os.chdir('/Users/chengjun/百度云同步盘/')
In [24]:
url='http://jc.nju.edu.cn'
html=urllib2.urlopen(url).read()
#print html
In [25]:
soup = BeautifulSoup(html)
In [26]:
print soup.title.text
南京大学新闻传播学院
In [27]:
titles = soup.find_all('a', {'class', 'notice-title'})
for t in titles:
    print t.text
新闻传播学院418博士之家学术午餐会第三季第
中国(广州)国际纪录片节 金红棉影像馆创纪录
409硕士之家启蒙分享会第25期 当代底层研究
未来媒体训练营第2期暨名记者进课堂(总第18
409硕士之家启蒙分享会第24期 女记者职业生
409硕士之家启蒙分享会第23期 科学传播与线
"江苏广电大讲堂"系列讲座 省级地
【预告】418博士之家学术午餐会第三季第8期
11月19日南京大学鼓楼读书分享会
名记者进课堂(总第17期):大型突发事件报道中
新闻传播学院418博士之家学术午餐会第三季第
11月12日南京大学鼓楼读书分享会
新闻传播学院418博士之家学术午餐会第三季第
我院聘任第一批新闻传播专业硕士校外导师

2. 抓取天涯帖子列表

In [21]:
def crawler(page_num, file_name):
    try:
        # open the browser
        url = "http://bbs.tianya.cn/list.jsp?item=free&nextid=%d&order=8&k=雾霾" % page_num
        content = urllib2.urlopen(url).read() #获取网页的html文本
        soup = BeautifulSoup(content) 
        articles = soup.find_all('tr')
        # write down info
        for i in articles[1:]:
            td = i.find_all('td')
            title = td[0].text.strip()
            title_url = td[0].a['href']
            author = td[1].text
            author_url = td[1].a['href']
            views = td[2].text
            replies = td[3].text
            date = td[4]['title']
            record = title + '\t' + title_url+ '\t' + author + '\t'+ author_url + '\t' + views+ '\t'  + replies+ '\t'+ date
            with open(file_name,'a') as p: # '''Note''':Append mode, run only once!
                        p.write(record.encode('utf-8')+"\n") ##!!encode here to utf-8 to avoid encoding

    except:
        pass
In [22]:
for page_num in range(0,3):
    print (page_num)
    crawler(page_num, 'wumai_first_4_pages.txt') 
0
1
2

3. 抓取全国空气质量日报

In [31]:
from IPython.display import HTML
HTML('<iframe src=http://datacenter.mep.gov.cn/report/air_daily/air_dairy.jsp?page=1 width=1000 height=500></iframe>')
# the webpage we would like to crawl
Out[31]:

做过从网页抓取元素的基本练习后,我们现在要把数据抓取程序扩用到几百个网页,从其中每 个网页上的表格抓取干净的数据。

In [34]:
url = "http://datacenter.mep.gov.cn/report/air_daily/air_dairy.jsp?page=1"
content = urllib2.urlopen(url).read() #获取网页的html文本
soup = BeautifulSoup(content) 
table = soup.find("table", { "id" : "report1" })

运行此程序,产生的内容部分应当如下:

In [38]:
print table
<table cellpadding="0" cellspacing="0" id="report1" onmouseout="report1433833out()" style="width:933px;table-layout:fixed;border-collapse:collapse">
<colgroup>
<col style="width:1px;"></col>
<col style="width:96px;"></col>
<col style="width:175px;"></col>
<col style="width:195px;"></col>
<col style="width:158px;"></col>
<col style="width:148px;"></col>
<col style="width:160px;"></col>
</colgroup>
<tr height="30" style="height:30px;">
<td class="report1_10"></td>
<td class="report1_9"></td>
<td class="report1_11" colspan="4" onmouseover="report1433833over()">全 国 城 市 空 气 质 量 日 报</td>
<td class="report1_12"></td>
</tr>
<tr height="30" style="height:30px;">
<td class="report1_1" colspan="2">序号</td>
<td class="report1_1" onmouseover="report1433833over()">城市</td>
<td class="report1_1">日期</td>
<td class="report1_1">AQI指数</td>
<td class="report1_14">空气质量级别</td>
<td class="report1_1">首要污染物</td>
</tr>
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" onmouseover="report1433833over()" style="color:#00A7D1;">1</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">北京市</td>
<td class="report1_4" style="color:#00A7D1;">2015-11-22</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">69</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">良</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">PM2.5</td>
</tr>
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" style="color:#00FF00;">2</td>
<td class="report1_4" style="color:#00FF00;">天津市</td>
<td class="report1_4" style="color:#00FF00;">2015-11-22</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00FF00;">46</td>
<td class="report1_4" style="color:#00FF00;">优</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00FF00;"></td>
</tr>
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" onmouseover="report1433833over()" style="color:#00A7D1;">3</td>
<td class="report1_4" style="color:#00A7D1;">石家庄市</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">2015-11-22</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">57</td>
<td class="report1_4" style="color:#00A7D1;">良</td>
<td class="report1_4" style="color:#00A7D1;">NO2</td>
</tr>
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" style="color:#00A7D1;">4</td>
<td class="report1_4" style="color:#00A7D1;">唐山市</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">2015-11-22</td>
<td class="report1_4" style="color:#00A7D1;">54</td>
<td class="report1_4" style="color:#00A7D1;">良</td>
<td class="report1_4" style="color:#00A7D1;">PM10</td>
</tr>
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" onmouseover="report1433833over()" style="color:#00FF00;">5</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00FF00;">秦皇岛市</td>
<td class="report1_4" style="color:#00FF00;">2015-11-22</td>
<td class="report1_4" style="color:#00FF00;">25</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00FF00;">优</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00FF00;"></td>
</tr>
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" style="color:#00A7D1;">6</td>
<td class="report1_4" style="color:#00A7D1;">邯郸市</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">2015-11-22</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">55</td>
<td class="report1_4" style="color:#00A7D1;">良</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">NO2</td>
</tr>
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" onmouseover="report1433833over()" style="color:#00A7D1;">7</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">邢台市</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">2015-11-22</td>
<td class="report1_4" style="color:#00A7D1;">54</td>
<td class="report1_4" style="color:#00A7D1;">良</td>
<td class="report1_4" style="color:#00A7D1;">PM2.5</td>
</tr>
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" style="color:#00A7D1;">8</td>
<td class="report1_4" style="color:#00A7D1;">保定市</td>
<td class="report1_4" style="color:#00A7D1;">2015-11-22</td>
<td class="report1_4" style="color:#00A7D1;">59</td>
<td class="report1_4" style="color:#00A7D1;">良</td>
<td class="report1_4" style="color:#00A7D1;">PM2.5</td>
</tr>
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" onmouseover="report1433833over()" style="color:#00FF00;">9</td>
<td class="report1_4" style="color:#00FF00;">承德市</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00FF00;">2015-11-22</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00FF00;">40</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00FF00;">优</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00FF00;"></td>
</tr>
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" style="color:#00A7D1;">10</td>
<td class="report1_4" style="color:#00A7D1;">沧州市</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">2015-11-22</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">55</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">良</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">NO2</td>
</tr>
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" onmouseover="report1433833over()" style="color:#00A7D1;">11</td>
<td class="report1_4" style="color:#00A7D1;">廊坊市</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">2015-11-22</td>
<td class="report1_4" style="color:#00A7D1;">60</td>
<td class="report1_4" style="color:#00A7D1;">良</td>
<td class="report1_4" style="color:#00A7D1;">PM2.5</td>
</tr>
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" onmouseover="report1433833over()" style="color:#00A7D1;">12</td>
<td class="report1_4" style="color:#00A7D1;">衡水市</td>
<td class="report1_4" style="color:#00A7D1;">2015-11-22</td>
<td class="report1_4" style="color:#00A7D1;">57</td>
<td class="report1_4" style="color:#00A7D1;">良</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">PM2.5</td>
</tr>
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" onmouseover="report1433833over()" style="color:#00FF00;">13</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00FF00;">张家口市</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00FF00;">2015-11-22</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00FF00;">47</td>
<td class="report1_4" style="color:#00FF00;">优</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00FF00;"></td>
</tr>
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" onmouseover="report1433833over()" style="color:#00FF00;">14</td>
<td class="report1_4" style="color:#00FF00;">太原市</td>
<td class="report1_4" style="color:#00FF00;">2015-11-22</td>
<td class="report1_4" style="color:#00FF00;">42</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00FF00;">优</td>
<td class="report1_4" style="color:#00FF00;"></td>
</tr>
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" onmouseover="report1433833over()" style="color:#00A7D1;">15</td>
<td class="report1_4" style="color:#00A7D1;">大同市</td>
<td class="report1_4" style="color:#00A7D1;">2015-11-22</td>
<td class="report1_4" style="color:#00A7D1;">58</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">良</td>
<td class="report1_4" style="color:#00A7D1;">CO</td>
</tr>
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" style="color:#00A7D1;">16</td>
<td class="report1_4" style="color:#00A7D1;">阳泉市</td>
<td class="report1_4" style="color:#00A7D1;">2015-11-22</td>
<td class="report1_4" style="color:#00A7D1;">51</td>
<td class="report1_4" style="color:#00A7D1;">良</td>
<td class="report1_4" style="color:#00A7D1;">SO2</td>
</tr>
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" onmouseover="report1433833over()" style="color:#00FF00;">17</td>
<td class="report1_4" style="color:#00FF00;">长治市</td>
<td class="report1_4" style="color:#00FF00;">2015-11-22</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00FF00;">50</td>
<td class="report1_4" style="color:#00FF00;">优</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00FF00;"></td>
</tr>
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" style="color:#00A7D1;">18</td>
<td class="report1_4" style="color:#00A7D1;">晋城市</td>
<td class="report1_4" style="color:#00A7D1;">2015-11-22</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">67</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">良</td>
<td class="report1_4" style="color:#00A7D1;">CO</td>
</tr>
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" style="color:#00A7D1;">19</td>
<td class="report1_4" style="color:#00A7D1;">朔州市</td>
<td class="report1_4" style="color:#00A7D1;">2015-11-22</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">51</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">良</td>
<td class="report1_4" style="color:#00A7D1;">SO2</td>
</tr>
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" style="color:#00A7D1;">20</td>
<td class="report1_4" style="color:#00A7D1;">晋中市</td>
<td class="report1_4" style="color:#00A7D1;">2015-11-22</td>
<td class="report1_4" style="color:#00A7D1;">55</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">良</td>
<td class="report1_4" style="color:#00A7D1;">SO2</td>
</tr>
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" style="color:#00FF00;">21</td>
<td class="report1_4" style="color:#00FF00;">运城市</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00FF00;">2015-11-22</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00FF00;">47</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00FF00;">优</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00FF00;"></td>
</tr>
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" onmouseover="report1433833over()" style="color:#00A7D1;">22</td>
<td class="report1_4" style="color:#00A7D1;">忻州市</td>
<td class="report1_4" style="color:#00A7D1;">2015-11-22</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">56</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">良</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">CO</td>
</tr>
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" onmouseover="report1433833over()" style="color:#00A7D1;">23</td>
<td class="report1_4" style="color:#00A7D1;">临汾市</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">2015-11-22</td>
<td class="report1_4" style="color:#00A7D1;">69</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">良</td>
<td class="report1_4" style="color:#00A7D1;">PM2.5</td>
</tr>
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" style="color:#00A7D1;">24</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">吕梁市</td>
<td class="report1_4" style="color:#00A7D1;">2015-11-22</td>
<td class="report1_4" style="color:#00A7D1;">82</td>
<td class="report1_4" style="color:#00A7D1;">良</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">CO</td>
</tr>
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" onmouseover="report1433833over()" style="color:#00A7D1;">25</td>
<td class="report1_4" style="color:#00A7D1;">呼和浩特市</td>
<td class="report1_4" style="color:#00A7D1;">2015-11-22</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">57</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">良</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">PM10</td>
</tr>
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" style="color:#00A7D1;">26</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">包头市</td>
<td class="report1_4" style="color:#00A7D1;">2015-11-22</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">62</td>
<td class="report1_4" style="color:#00A7D1;">良</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">PM10</td>
</tr>
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" style="color:#00A7D1;">27</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">乌海市</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">2015-11-22</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">71</td>
<td class="report1_4" style="color:#00A7D1;">良</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">PM10</td>
</tr>
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" style="color:#00A7D1;">28</td>
<td class="report1_4" style="color:#00A7D1;">赤峰市</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">2015-11-22</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">53</td>
<td class="report1_4" style="color:#00A7D1;">良</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">PM10</td>
</tr>
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" onmouseover="report1433833over()" style="color:#00FF00;">29</td>
<td class="report1_4" style="color:#00FF00;">通辽市</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00FF00;">2015-11-22</td>
<td class="report1_4" style="color:#00FF00;">43</td>
<td class="report1_4" style="color:#00FF00;">优</td>
<td class="report1_4" style="color:#00FF00;"></td>
</tr>
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" style="color:#00A7D1;">30</td>
<td class="report1_4" style="color:#00A7D1;">鄂尔多斯市</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">2015-11-22</td>
<td class="report1_4" style="color:#00A7D1;">64</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">良</td>
<td class="report1_4" style="color:#00A7D1;">PM2.5</td>
</tr>
<tr height="25" style="height:25px;">
<td class="report1_7" colspan="3" onmouseover="report1433833over()">记录总数:<b><font color="#004e98">367</font></b>  总页数:<b><font color="#004e98">13</font></b></td>
<td class="report1_8">每页记录数:<b><font color="#004e98">30</font></b></td>
<td class="report1_5" style="padding-right:4px;">首页 上一页</td>
<td class="report1_8"><a href="javascript: jumpTo(2)">下一页</a> <a href="javascript: jumpTo(13)">末页</a></td>
<td class="report1_5"><input name="pageNum" size="5" type="text" value="1"> <input onclick="jump('13');" type="button" value="跳转"/></input></td>
</tr>
<tr height="25" style="height:25px;">
<td class="report1_3"></td>
<td class="report1_3" onmouseover="report1433833over()"></td>
<td class="report1_3" onmouseover="report1433833over()"></td>
<td class="report1_3" onmouseover="report1433833over()"></td>
<td class="report1_3"></td>
<td class="report1_3"></td>
<td class="report1_5"><a href="#" onclick="forwardToMain();"><img border="no" src="../images/button/forwardIndex.gif"/></a></td>
</tr>
<tr height="300" style="height:300px;">
<td class="report1_3"></td>
<td class="report1_6" colspan="6"><img border="no" height="300" ismap="" src="http://datacenter.mep.gov.cn:80/report/reportServlet?action=9&amp;graphId=114628&amp;time=1448244450021" usemap="#114628" width="932"><map name="114628"><area coords="68,81,78,216" shape="rect" title="北京市 AQI指数 69">
<area coords="96,126,106,216" shape="rect" title="天津市 AQI指数 46">
<area coords="124,104,134,216" shape="rect" title="石家庄市 AQI指数 57">
<area coords="152,110,162,216" shape="rect" title="唐山市 AQI指数 54">
<area coords="180,167,190,216" shape="rect" title="秦皇岛市 AQI指数 25">
<area coords="209,108,219,216" shape="rect" title="邯郸市 AQI指数 55">
<area coords="237,110,247,216" shape="rect" title="邢台市 AQI指数 54">
<area coords="265,100,275,216" shape="rect" title="保定市 AQI指数 59">
<area coords="293,138,303,216" shape="rect" title="承德市 AQI指数 40">
<area coords="321,108,331,216" shape="rect" title="沧州市 AQI指数 55">
<area coords="349,98,359,216" shape="rect" title="廊坊市 AQI指数 60">
<area coords="377,104,387,216" shape="rect" title="衡水市 AQI指数 57">
<area coords="405,124,415,216" shape="rect" title="张家口市 AQI指数 47">
<area coords="434,134,444,216" shape="rect" title="太原市 AQI指数 42">
<area coords="462,102,472,216" shape="rect" title="大同市 AQI指数 58">
<area coords="490,116,500,216" shape="rect" title="阳泉市 AQI指数 51">
<area coords="518,118,528,216" shape="rect" title="长治市 AQI指数 50">
<area coords="546,85,556,216" shape="rect" title="晋城市 AQI指数 67">
<area coords="574,116,584,216" shape="rect" title="朔州市 AQI指数 51">
<area coords="602,108,612,216" shape="rect" title="晋中市 AQI指数 55">
<area coords="630,124,640,216" shape="rect" title="运城市 AQI指数 47">
<area coords="659,106,669,216" shape="rect" title="忻州市 AQI指数 56">
<area coords="687,81,697,216" shape="rect" title="临汾市 AQI指数 69">
<area coords="715,55,725,216" shape="rect" title="吕梁市 AQI指数 82">
<area coords="743,104,753,216" shape="rect" title="呼和浩特市 AQI指数 57">
<area coords="771,94,781,216" shape="rect" title="包头市 AQI指数 62">
<area coords="799,77,809,216" shape="rect" title="乌海市 AQI指数 71">
<area coords="827,112,837,216" shape="rect" title="赤峰市 AQI指数 53">
<area coords="855,132,865,216" shape="rect" title="通辽市 AQI指数 43">
<area coords="884,91,894,216" shape="rect" title="鄂尔多斯市 AQI指数 64">
</area></area></area></area></area></area></area></area></area></area></area></area></area></area></area></area></area></area></area></area></area></area></area></area></area></area></area></area></area></area></map></img></td>
</tr>
</table>

find命令会找出第一个符合要求的标签, id 或class的第一个东西。

findAll找到所有符合你要求的东西。它会产生一个列表list,而不是单个的值。

这里我们要找到表格里所有的<tr>标签。tr的意思是“表格里的行”, 所以清单里每个内容都是 一行数据。我们打印时在每行之间都加了横线,以使得打印结果更容易看。
In [39]:
for row in table.findAll("tr"):
    print row
    print "------"

# 程序运转的结果应当如下:
<tr height="30" style="height:30px;">
<td class="report1_10"></td>
<td class="report1_9"></td>
<td class="report1_11" colspan="4" onmouseover="report1433833over()">全 国 城 市 空 气 质 量 日 报</td>
<td class="report1_12"></td>
</tr>
------
<tr height="30" style="height:30px;">
<td class="report1_1" colspan="2">序号</td>
<td class="report1_1" onmouseover="report1433833over()">城市</td>
<td class="report1_1">日期</td>
<td class="report1_1">AQI指数</td>
<td class="report1_14">空气质量级别</td>
<td class="report1_1">首要污染物</td>
</tr>
------
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" onmouseover="report1433833over()" style="color:#00A7D1;">1</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">北京市</td>
<td class="report1_4" style="color:#00A7D1;">2015-11-22</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">69</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">良</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">PM2.5</td>
</tr>
------
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" style="color:#00FF00;">2</td>
<td class="report1_4" style="color:#00FF00;">天津市</td>
<td class="report1_4" style="color:#00FF00;">2015-11-22</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00FF00;">46</td>
<td class="report1_4" style="color:#00FF00;">优</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00FF00;"></td>
</tr>
------
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" onmouseover="report1433833over()" style="color:#00A7D1;">3</td>
<td class="report1_4" style="color:#00A7D1;">石家庄市</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">2015-11-22</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">57</td>
<td class="report1_4" style="color:#00A7D1;">良</td>
<td class="report1_4" style="color:#00A7D1;">NO2</td>
</tr>
------
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" style="color:#00A7D1;">4</td>
<td class="report1_4" style="color:#00A7D1;">唐山市</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">2015-11-22</td>
<td class="report1_4" style="color:#00A7D1;">54</td>
<td class="report1_4" style="color:#00A7D1;">良</td>
<td class="report1_4" style="color:#00A7D1;">PM10</td>
</tr>
------
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" onmouseover="report1433833over()" style="color:#00FF00;">5</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00FF00;">秦皇岛市</td>
<td class="report1_4" style="color:#00FF00;">2015-11-22</td>
<td class="report1_4" style="color:#00FF00;">25</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00FF00;">优</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00FF00;"></td>
</tr>
------
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" style="color:#00A7D1;">6</td>
<td class="report1_4" style="color:#00A7D1;">邯郸市</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">2015-11-22</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">55</td>
<td class="report1_4" style="color:#00A7D1;">良</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">NO2</td>
</tr>
------
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" onmouseover="report1433833over()" style="color:#00A7D1;">7</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">邢台市</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">2015-11-22</td>
<td class="report1_4" style="color:#00A7D1;">54</td>
<td class="report1_4" style="color:#00A7D1;">良</td>
<td class="report1_4" style="color:#00A7D1;">PM2.5</td>
</tr>
------
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" style="color:#00A7D1;">8</td>
<td class="report1_4" style="color:#00A7D1;">保定市</td>
<td class="report1_4" style="color:#00A7D1;">2015-11-22</td>
<td class="report1_4" style="color:#00A7D1;">59</td>
<td class="report1_4" style="color:#00A7D1;">良</td>
<td class="report1_4" style="color:#00A7D1;">PM2.5</td>
</tr>
------
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" onmouseover="report1433833over()" style="color:#00FF00;">9</td>
<td class="report1_4" style="color:#00FF00;">承德市</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00FF00;">2015-11-22</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00FF00;">40</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00FF00;">优</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00FF00;"></td>
</tr>
------
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" style="color:#00A7D1;">10</td>
<td class="report1_4" style="color:#00A7D1;">沧州市</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">2015-11-22</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">55</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">良</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">NO2</td>
</tr>
------
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" onmouseover="report1433833over()" style="color:#00A7D1;">11</td>
<td class="report1_4" style="color:#00A7D1;">廊坊市</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">2015-11-22</td>
<td class="report1_4" style="color:#00A7D1;">60</td>
<td class="report1_4" style="color:#00A7D1;">良</td>
<td class="report1_4" style="color:#00A7D1;">PM2.5</td>
</tr>
------
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" onmouseover="report1433833over()" style="color:#00A7D1;">12</td>
<td class="report1_4" style="color:#00A7D1;">衡水市</td>
<td class="report1_4" style="color:#00A7D1;">2015-11-22</td>
<td class="report1_4" style="color:#00A7D1;">57</td>
<td class="report1_4" style="color:#00A7D1;">良</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">PM2.5</td>
</tr>
------
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" onmouseover="report1433833over()" style="color:#00FF00;">13</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00FF00;">张家口市</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00FF00;">2015-11-22</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00FF00;">47</td>
<td class="report1_4" style="color:#00FF00;">优</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00FF00;"></td>
</tr>
------
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" onmouseover="report1433833over()" style="color:#00FF00;">14</td>
<td class="report1_4" style="color:#00FF00;">太原市</td>
<td class="report1_4" style="color:#00FF00;">2015-11-22</td>
<td class="report1_4" style="color:#00FF00;">42</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00FF00;">优</td>
<td class="report1_4" style="color:#00FF00;"></td>
</tr>
------
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" onmouseover="report1433833over()" style="color:#00A7D1;">15</td>
<td class="report1_4" style="color:#00A7D1;">大同市</td>
<td class="report1_4" style="color:#00A7D1;">2015-11-22</td>
<td class="report1_4" style="color:#00A7D1;">58</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">良</td>
<td class="report1_4" style="color:#00A7D1;">CO</td>
</tr>
------
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" style="color:#00A7D1;">16</td>
<td class="report1_4" style="color:#00A7D1;">阳泉市</td>
<td class="report1_4" style="color:#00A7D1;">2015-11-22</td>
<td class="report1_4" style="color:#00A7D1;">51</td>
<td class="report1_4" style="color:#00A7D1;">良</td>
<td class="report1_4" style="color:#00A7D1;">SO2</td>
</tr>
------
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" onmouseover="report1433833over()" style="color:#00FF00;">17</td>
<td class="report1_4" style="color:#00FF00;">长治市</td>
<td class="report1_4" style="color:#00FF00;">2015-11-22</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00FF00;">50</td>
<td class="report1_4" style="color:#00FF00;">优</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00FF00;"></td>
</tr>
------
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" style="color:#00A7D1;">18</td>
<td class="report1_4" style="color:#00A7D1;">晋城市</td>
<td class="report1_4" style="color:#00A7D1;">2015-11-22</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">67</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">良</td>
<td class="report1_4" style="color:#00A7D1;">CO</td>
</tr>
------
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" style="color:#00A7D1;">19</td>
<td class="report1_4" style="color:#00A7D1;">朔州市</td>
<td class="report1_4" style="color:#00A7D1;">2015-11-22</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">51</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">良</td>
<td class="report1_4" style="color:#00A7D1;">SO2</td>
</tr>
------
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" style="color:#00A7D1;">20</td>
<td class="report1_4" style="color:#00A7D1;">晋中市</td>
<td class="report1_4" style="color:#00A7D1;">2015-11-22</td>
<td class="report1_4" style="color:#00A7D1;">55</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">良</td>
<td class="report1_4" style="color:#00A7D1;">SO2</td>
</tr>
------
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" style="color:#00FF00;">21</td>
<td class="report1_4" style="color:#00FF00;">运城市</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00FF00;">2015-11-22</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00FF00;">47</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00FF00;">优</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00FF00;"></td>
</tr>
------
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" onmouseover="report1433833over()" style="color:#00A7D1;">22</td>
<td class="report1_4" style="color:#00A7D1;">忻州市</td>
<td class="report1_4" style="color:#00A7D1;">2015-11-22</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">56</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">良</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">CO</td>
</tr>
------
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" onmouseover="report1433833over()" style="color:#00A7D1;">23</td>
<td class="report1_4" style="color:#00A7D1;">临汾市</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">2015-11-22</td>
<td class="report1_4" style="color:#00A7D1;">69</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">良</td>
<td class="report1_4" style="color:#00A7D1;">PM2.5</td>
</tr>
------
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" style="color:#00A7D1;">24</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">吕梁市</td>
<td class="report1_4" style="color:#00A7D1;">2015-11-22</td>
<td class="report1_4" style="color:#00A7D1;">82</td>
<td class="report1_4" style="color:#00A7D1;">良</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">CO</td>
</tr>
------
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" onmouseover="report1433833over()" style="color:#00A7D1;">25</td>
<td class="report1_4" style="color:#00A7D1;">呼和浩特市</td>
<td class="report1_4" style="color:#00A7D1;">2015-11-22</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">57</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">良</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">PM10</td>
</tr>
------
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" style="color:#00A7D1;">26</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">包头市</td>
<td class="report1_4" style="color:#00A7D1;">2015-11-22</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">62</td>
<td class="report1_4" style="color:#00A7D1;">良</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">PM10</td>
</tr>
------
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" style="color:#00A7D1;">27</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">乌海市</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">2015-11-22</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">71</td>
<td class="report1_4" style="color:#00A7D1;">良</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">PM10</td>
</tr>
------
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" style="color:#00A7D1;">28</td>
<td class="report1_4" style="color:#00A7D1;">赤峰市</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">2015-11-22</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">53</td>
<td class="report1_4" style="color:#00A7D1;">良</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">PM10</td>
</tr>
------
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" onmouseover="report1433833over()" style="color:#00FF00;">29</td>
<td class="report1_4" style="color:#00FF00;">通辽市</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00FF00;">2015-11-22</td>
<td class="report1_4" style="color:#00FF00;">43</td>
<td class="report1_4" style="color:#00FF00;">优</td>
<td class="report1_4" style="color:#00FF00;"></td>
</tr>
------
<tr height="30" style="height:30px;">
<td class="report1_4" colspan="2" style="color:#00A7D1;">30</td>
<td class="report1_4" style="color:#00A7D1;">鄂尔多斯市</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">2015-11-22</td>
<td class="report1_4" style="color:#00A7D1;">64</td>
<td class="report1_4" onmouseover="report1433833over()" style="color:#00A7D1;">良</td>
<td class="report1_4" style="color:#00A7D1;">PM2.5</td>
</tr>
------
<tr height="25" style="height:25px;">
<td class="report1_7" colspan="3" onmouseover="report1433833over()">记录总数:<b><font color="#004e98">367</font></b>  总页数:<b><font color="#004e98">13</font></b></td>
<td class="report1_8">每页记录数:<b><font color="#004e98">30</font></b></td>
<td class="report1_5" style="padding-right:4px;">首页 上一页</td>
<td class="report1_8"><a href="javascript: jumpTo(2)">下一页</a> <a href="javascript: jumpTo(13)">末页</a></td>
<td class="report1_5"><input name="pageNum" size="5" type="text" value="1"> <input onclick="jump('13');" type="button" value="跳转"/></input></td>
</tr>
------
<tr height="25" style="height:25px;">
<td class="report1_3"></td>
<td class="report1_3" onmouseover="report1433833over()"></td>
<td class="report1_3" onmouseover="report1433833over()"></td>
<td class="report1_3" onmouseover="report1433833over()"></td>
<td class="report1_3"></td>
<td class="report1_3"></td>
<td class="report1_5"><a href="#" onclick="forwardToMain();"><img border="no" src="../images/button/forwardIndex.gif"/></a></td>
</tr>
------
<tr height="300" style="height:300px;">
<td class="report1_3"></td>
<td class="report1_6" colspan="6"><img border="no" height="300" ismap="" src="http://datacenter.mep.gov.cn:80/report/reportServlet?action=9&amp;graphId=114628&amp;time=1448244450021" usemap="#114628" width="932"><map name="114628"><area coords="68,81,78,216" shape="rect" title="北京市 AQI指数 69">
<area coords="96,126,106,216" shape="rect" title="天津市 AQI指数 46">
<area coords="124,104,134,216" shape="rect" title="石家庄市 AQI指数 57">
<area coords="152,110,162,216" shape="rect" title="唐山市 AQI指数 54">
<area coords="180,167,190,216" shape="rect" title="秦皇岛市 AQI指数 25">
<area coords="209,108,219,216" shape="rect" title="邯郸市 AQI指数 55">
<area coords="237,110,247,216" shape="rect" title="邢台市 AQI指数 54">
<area coords="265,100,275,216" shape="rect" title="保定市 AQI指数 59">
<area coords="293,138,303,216" shape="rect" title="承德市 AQI指数 40">
<area coords="321,108,331,216" shape="rect" title="沧州市 AQI指数 55">
<area coords="349,98,359,216" shape="rect" title="廊坊市 AQI指数 60">
<area coords="377,104,387,216" shape="rect" title="衡水市 AQI指数 57">
<area coords="405,124,415,216" shape="rect" title="张家口市 AQI指数 47">
<area coords="434,134,444,216" shape="rect" title="太原市 AQI指数 42">
<area coords="462,102,472,216" shape="rect" title="大同市 AQI指数 58">
<area coords="490,116,500,216" shape="rect" title="阳泉市 AQI指数 51">
<area coords="518,118,528,216" shape="rect" title="长治市 AQI指数 50">
<area coords="546,85,556,216" shape="rect" title="晋城市 AQI指数 67">
<area coords="574,116,584,216" shape="rect" title="朔州市 AQI指数 51">
<area coords="602,108,612,216" shape="rect" title="晋中市 AQI指数 55">
<area coords="630,124,640,216" shape="rect" title="运城市 AQI指数 47">
<area coords="659,106,669,216" shape="rect" title="忻州市 AQI指数 56">
<area coords="687,81,697,216" shape="rect" title="临汾市 AQI指数 69">
<area coords="715,55,725,216" shape="rect" title="吕梁市 AQI指数 82">
<area coords="743,104,753,216" shape="rect" title="呼和浩特市 AQI指数 57">
<area coords="771,94,781,216" shape="rect" title="包头市 AQI指数 62">
<area coords="799,77,809,216" shape="rect" title="乌海市 AQI指数 71">
<area coords="827,112,837,216" shape="rect" title="赤峰市 AQI指数 53">
<area coords="855,132,865,216" shape="rect" title="通辽市 AQI指数 43">
<area coords="884,91,894,216" shape="rect" title="鄂尔多斯市 AQI指数 64">
</area></area></area></area></area></area></area></area></area></area></area></area></area></area></area></area></area></area></area></area></area></area></area></area></area></area></area></area></area></area></map></img></td>
</tr>
------
每行都有几个单元格,每个单元格都在一个<td>(意思是“表格数据”)标签里。我们可以对 每行都用findAll来获得一个列出那行中单元格的清单,然后用方括号[ ] 来标明该清单中的单个项。我们这样来获得每行里每个单元格的数据。
In [41]:
for row in table.findAll("tr"):
    cells = row.findAll("td")
    rowNumber = cells[0].find(text = True)
    cityName = cells[1].find(text = True)
    date = cells[2].find(text = True)
    AQI = cells[3].find(text = True)
    
    print rowNumber,'\t', cityName,'\t', date, '\t', AQI, '----\n'
None 	None 	全 国 城 市 空 气 质 量 日 报 	None ----

序号 	城市 	日期 	AQI指数 ----

1 	北京市 	2015-11-22 	69 ----

2 	天津市 	2015-11-22 	46 ----

3 	石家庄市 	2015-11-22 	57 ----

4 	唐山市 	2015-11-22 	54 ----

5 	秦皇岛市 	2015-11-22 	25 ----

6 	邯郸市 	2015-11-22 	55 ----

7 	邢台市 	2015-11-22 	54 ----

8 	保定市 	2015-11-22 	59 ----

9 	承德市 	2015-11-22 	40 ----

10 	沧州市 	2015-11-22 	55 ----

11 	廊坊市 	2015-11-22 	60 ----

12 	衡水市 	2015-11-22 	57 ----

13 	张家口市 	2015-11-22 	47 ----

14 	太原市 	2015-11-22 	42 ----

15 	大同市 	2015-11-22 	58 ----

16 	阳泉市 	2015-11-22 	51 ----

17 	长治市 	2015-11-22 	50 ----

18 	晋城市 	2015-11-22 	67 ----

19 	朔州市 	2015-11-22 	51 ----

20 	晋中市 	2015-11-22 	55 ----

21 	运城市 	2015-11-22 	47 ----

22 	忻州市 	2015-11-22 	56 ----

23 	临汾市 	2015-11-22 	69 ----

24 	吕梁市 	2015-11-22 	82 ----

25 	呼和浩特市 	2015-11-22 	57 ----

26 	包头市 	2015-11-22 	62 ----

27 	乌海市 	2015-11-22 	71 ----

28 	赤峰市 	2015-11-22 	53 ----

29 	通辽市 	2015-11-22 	43 ----

30 	鄂尔多斯市 	2015-11-22 	64 ----

记录总数: 	每页记录数: 	首页 上一页 	下一页 ----

None 	None 	None 	None ----

---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-41-ccc186319708> in <module>()
      3     rowNumber = cells[0].find(text = True)
      4     cityName = cells[1].find(text = True)
----> 5     date = cells[2].find(text = True)
      6     AQI = cells[3].find(text = True)
      7 

IndexError: list index out of range

最后的一个程序出了错。要改正此错误,我们必须只处理那些实际包含有数据的行。幸运的 是,这些行都以行数打头,而行数我们可以查看。我们可以用一个if句子和两个新功能 == None and isDigit 来查看行数。

现在我们可以使用这一原则来只打印包含数据的行。

In [42]:
for row in table.findAll("tr"):
    cells = row.findAll("td")
    rowNumber = cells[0].find(text = True)
    if rowNumber != None and rowNumber.isdigit():
        cityName = cells[1].find(text = True)
        date = cells[2].find(text = True)
        AQI = cells[3].find(text = True)

        print rowNumber,'\t', cityName,'\t', date, '\t', AQI, '----\n'
1 	北京市 	2015-11-22 	69 ----

2 	天津市 	2015-11-22 	46 ----

3 	石家庄市 	2015-11-22 	57 ----

4 	唐山市 	2015-11-22 	54 ----

5 	秦皇岛市 	2015-11-22 	25 ----

6 	邯郸市 	2015-11-22 	55 ----

7 	邢台市 	2015-11-22 	54 ----

8 	保定市 	2015-11-22 	59 ----

9 	承德市 	2015-11-22 	40 ----

10 	沧州市 	2015-11-22 	55 ----

11 	廊坊市 	2015-11-22 	60 ----

12 	衡水市 	2015-11-22 	57 ----

13 	张家口市 	2015-11-22 	47 ----

14 	太原市 	2015-11-22 	42 ----

15 	大同市 	2015-11-22 	58 ----

16 	阳泉市 	2015-11-22 	51 ----

17 	长治市 	2015-11-22 	50 ----

18 	晋城市 	2015-11-22 	67 ----

19 	朔州市 	2015-11-22 	51 ----

20 	晋中市 	2015-11-22 	55 ----

21 	运城市 	2015-11-22 	47 ----

22 	忻州市 	2015-11-22 	56 ----

23 	临汾市 	2015-11-22 	69 ----

24 	吕梁市 	2015-11-22 	82 ----

25 	呼和浩特市 	2015-11-22 	57 ----

26 	包头市 	2015-11-22 	62 ----

27 	乌海市 	2015-11-22 	71 ----

28 	赤峰市 	2015-11-22 	53 ----

29 	通辽市 	2015-11-22 	43 ----

30 	鄂尔多斯市 	2015-11-22 	64 ----

现在我们可以从每一页都抓取数据。注意我们这页的URL以page=1结尾。我们可以改变此 数字,以对每页数据进行计数。我们从一个没有页数的URL开始,见下:

In [44]:
urlBase = "http://datacenter.mep.gov.cn/report/air_daily/air_dairy.jsp?page="

然后我们用一个for环针对每页来运转主编码部分一次。虽然页数是从1到 13, 我们得用 ( 1,14)这样一个范围,因为范围实际上数到比上限数小一。 (Python的设计是这样,使得(a,b )序列和(b,c)序列连接起来时数字没有重复或缺失)。

In [49]:
for pageNum in range(1, 14):
    
    content = urllib2.urlopen(urlBase + str(pageNum)).read() #获取网页的html文本
    soup = BeautifulSoup(content) 
    table = soup.find("table", { "id" : "report1" })
    
    for row in table.findAll("tr"):
        cells = row.findAll("td")
        rowNumber = cells[0].find(text = True)
        
        if rowNumber != None and rowNumber.isdigit():
            cityName = cells[1].find(text = True)
            date = cells[2].find(text = True)
            AQI = cells[3].find(text = True)

            print rowNumber,',', cityName,',', date, ',', AQI, '\n'
1 , 北京市 , 2015-11-22 , 69 

2 , 天津市 , 2015-11-22 , 46 

3 , 石家庄市 , 2015-11-22 , 57 

4 , 唐山市 , 2015-11-22 , 54 

5 , 秦皇岛市 , 2015-11-22 , 25 

6 , 邯郸市 , 2015-11-22 , 55 

7 , 邢台市 , 2015-11-22 , 54 

8 , 保定市 , 2015-11-22 , 59 

9 , 承德市 , 2015-11-22 , 40 

10 , 沧州市 , 2015-11-22 , 55 

11 , 廊坊市 , 2015-11-22 , 60 

12 , 衡水市 , 2015-11-22 , 57 

13 , 张家口市 , 2015-11-22 , 47 

14 , 太原市 , 2015-11-22 , 42 

15 , 大同市 , 2015-11-22 , 58 

16 , 阳泉市 , 2015-11-22 , 51 

17 , 长治市 , 2015-11-22 , 50 

18 , 晋城市 , 2015-11-22 , 67 

19 , 朔州市 , 2015-11-22 , 51 

20 , 晋中市 , 2015-11-22 , 55 

21 , 运城市 , 2015-11-22 , 47 

22 , 忻州市 , 2015-11-22 , 56 

23 , 临汾市 , 2015-11-22 , 69 

24 , 吕梁市 , 2015-11-22 , 82 

25 , 呼和浩特市 , 2015-11-22 , 57 

26 , 包头市 , 2015-11-22 , 62 

27 , 乌海市 , 2015-11-22 , 71 

28 , 赤峰市 , 2015-11-22 , 53 

29 , 通辽市 , 2015-11-22 , 43 

30 , 鄂尔多斯市 , 2015-11-22 , 64 

31 , 呼伦贝尔市 , 2015-11-22 , 55 

32 , 巴彦淖尔市 , 2015-11-22 , 74 

33 , 乌兰察布市 , 2015-11-22 , 46 

34 , 兴安盟 , 2015-11-22 , 69 

35 , 锡林郭勒盟 , 2015-11-22 , 61 

36 , 阿拉善盟 , 2015-11-22 , 82 

37 , 沈阳市 , 2015-11-22 , 124 

38 , 大连市 , 2015-11-22 , 102 

39 , 瓦房店市 , 2015-11-22 , 114 

40 , 鞍山市 , 2015-11-22 , 144 

41 , 抚顺市 , 2015-11-22 , 105 

42 , 本溪市 , 2015-11-22 , 152 

43 , 丹东市 , 2015-11-22 , 57 

44 , 锦州市 , 2015-11-22 , 59 

45 , 营口市 , 2015-11-22 , 62 

46 , 阜新市 , 2015-11-22 , 45 

47 , 辽阳市 , 2015-11-22 , 117 

48 , 盘锦市 , 2015-11-22 , 51 

49 , 铁岭市 , 2015-11-22 , 128 

50 , 朝阳市 , 2015-11-22 , 57 

51 , 葫芦岛市 , 2015-11-22 , 52 

52 , 长春市 , 2015-11-22 , 110 

53 , 吉林市 , 2015-11-22 , 129 

54 , 四平市 , 2015-11-22 , 133 

55 , 辽源市 , 2015-11-22 , 117 

56 , 通化市 , 2015-11-22 , 102 

57 , 白山市 , 2015-11-22 , 67 

58 , 松原市 , 2015-11-22 , 89 

59 , 白城市 , 2015-11-22 , 55 

60 , 延边州 , 2015-11-22 , 70 

61 , 哈尔滨市 , 2015-11-22 , 95 

62 , 齐齐哈尔市 , 2015-11-22 , 51 

63 , 鸡西市 , 2015-11-22 , 39 

64 , 鹤岗市 , 2015-11-22 , 30 

65 , 双鸭山市 , 2015-11-22 , 48 

66 , 大庆市 , 2015-11-22 , 43 

67 , 伊春市 , 2015-11-22 , 23 

68 , 佳木斯市 , 2015-11-22 , 31 

69 , 七台河市 , 2015-11-22 , 92 

70 , 牡丹江市 , 2015-11-22 , 74 

71 , 黑河市 , 2015-11-22 , 29 

72 , 绥化市 , 2015-11-22 , 97 

73 , 大兴安岭地区 , 2015-11-22 , 62 

74 , 上海市 , 2015-11-22 , 57 

75 , 南京市 , 2015-11-22 , 58 

76 , 无锡市 , 2015-11-22 , 53 

77 , 江阴市 , 2015-11-22 , 58 

78 , 宜兴市 , 2015-11-22 , 53 

79 , 徐州市 , 2015-11-22 , 41 

80 , 常州市 , 2015-11-22 , 54 

81 , 溧阳市 , 2015-11-22 , 53 

82 , 金坛市 , 2015-11-22 , 68 

83 , 苏州市 , 2015-11-22 , 70 

84 , 常熟市 , 2015-11-22 , 47 

85 , 张家港市 , 2015-11-22 , 50 

86 , 昆山市 , 2015-11-22 , 50 

87 , 吴江市 , 2015-11-22 , 54 

88 , 太仓市 , 2015-11-22 , 51 

89 , 南通市 , 2015-11-22 , 46 

90 , 海门市 , 2015-11-22 , 43 

91 , 连云港市 , 2015-11-22 , 40 

92 , 淮安市 , 2015-11-22 , 38 

93 , 盐城市 , 2015-11-22 , 49 

94 , 扬州市 , 2015-11-22 , 60 

95 , 镇江市 , 2015-11-22 , 49 

96 , 句容市 , 2015-11-22 , 39 

97 , 泰州市 , 2015-11-22 , 52 

98 , 宿迁市 , 2015-11-22 , 38 

99 , 杭州市 , 2015-11-22 , 77 

100 , 富阳市 , 2015-11-22 , 71 

101 , 临安市 , 2015-11-22 , 62 

102 , 宁波市 , 2015-11-22 , 82 

103 , 温州市 , 2015-11-22 , 65 

104 , 嘉兴市 , 2015-11-22 , 42 

105 , 湖州市 , 2015-11-22 , 48 

106 , 诸暨市 , 2015-11-22 , None 

107 , 金华市 , 2015-11-22 , 83 

108 , 义乌市 , 2015-11-22 , 77 

109 , 衢州市 , 2015-11-22 , 60 

110 , 舟山市 , 2015-11-22 , 37 

111 , 台州市 , 2015-11-22 , 49 

112 , 丽水市 , 2015-11-22 , 53 

113 , 绍兴市 , 2015-11-22 , 101 

114 , 合肥市 , 2015-11-22 , 55 

115 , 芜湖市 , 2015-11-22 , 54 

116 , 蚌埠市 , 2015-11-22 , 47 

117 , 淮南市 , 2015-11-22 , 44 

118 , 马鞍山市 , 2015-11-22 , 52 

119 , 淮北市 , 2015-11-22 , 49 

120 , 铜陵市 , 2015-11-22 , 58 

121 , 安庆市 , 2015-11-22 , 75 

122 , 黄山市 , 2015-11-22 , 33 

123 , 滁州市 , 2015-11-22 , 54 

124 , 阜阳市 , 2015-11-22 , 39 

125 , 宿州市 , 2015-11-22 , 60 

126 , 六安市 , 2015-11-22 , 56 

127 , 亳州市 , 2015-11-22 , 77 

128 , 池州市 , 2015-11-22 , 48 

129 , 宣城市 , 2015-11-22 , 60 

130 , 福州市 , 2015-11-22 , 43 

131 , 厦门市 , 2015-11-22 , 38 

132 , 莆田市 , 2015-11-22 , 38 

133 , 三明市 , 2015-11-22 , 47 

134 , 泉州市 , 2015-11-22 , 35 

135 , 漳州市 , 2015-11-22 , 56 

136 , 南平市 , 2015-11-22 , 36 

137 , 龙岩市 , 2015-11-22 , 40 

138 , 宁德市 , 2015-11-22 , 34 

139 , 南昌市 , 2015-11-22 , 57 

140 , 景德镇市 , 2015-11-22 , 44 

141 , 萍乡市 , 2015-11-22 , 55 

142 , 九江市 , 2015-11-22 , 80 

143 , 新余市 , 2015-11-22 , 56 

144 , 鹰潭市 , 2015-11-22 , 58 

145 , 赣州市 , 2015-11-22 , 40 

146 , 吉安市 , 2015-11-22 , 48 

147 , 宜春市 , 2015-11-22 , 55 

148 , 抚州市 , 2015-11-22 , 40 

149 , 上饶市 , 2015-11-22 , 59 

150 , 济南市 , 2015-11-22 , 46 

151 , 章丘市 , 2015-11-22 , 30 

152 , 青岛市 , 2015-11-22 , 40 

153 , 胶州市 , 2015-11-22 , 40 

154 , 即墨市 , 2015-11-22 , 44 

155 , 平度市 , 2015-11-22 , 30 

156 , 胶南市 , 2015-11-22 , 46 

157 , 莱西市 , 2015-11-22 , 33 

158 , 淄博市 , 2015-11-22 , 37 

159 , 枣庄市 , 2015-11-22 , 53 

160 , 东营市 , 2015-11-22 , 29 

161 , 烟台市 , 2015-11-22 , 33 

162 , 莱州市 , 2015-11-22 , 57 

163 , 蓬莱市 , 2015-11-22 , 55 

164 , 招远市 , 2015-11-22 , 35 

165 , 潍坊市 , 2015-11-22 , 35 

166 , 寿光市 , 2015-11-22 , 43 

167 , 济宁市 , 2015-11-22 , 51 

168 , 泰安市 , 2015-11-22 , 45 

169 , 威海市 , 2015-11-22 , 36 

170 , 文登市 , 2015-11-22 , 28 

171 , 荣成市 , 2015-11-22 , 26 

172 , 乳山市 , 2015-11-22 , 36 

173 , 日照市 , 2015-11-22 , 73 

174 , 莱芜市 , 2015-11-22 , 49 

175 , 临沂市 , 2015-11-22 , 52 

176 , 德州市 , 2015-11-22 , 43 

177 , 聊城市 , 2015-11-22 , 26 

178 , 滨州市 , 2015-11-22 , 42 

179 , 菏泽市 , 2015-11-22 , 32 

180 , 郑州市 , 2015-11-22 , 50 

181 , 开封市 , 2015-11-22 , 52 

182 , 洛阳市 , 2015-11-22 , 62 

183 , 平顶山市 , 2015-11-22 , 52 

184 , 安阳市 , 2015-11-22 , 61 

185 , 鹤壁市 , 2015-11-22 , 38 

186 , 新乡市 , 2015-11-22 , 52 

187 , 焦作市 , 2015-11-22 , 59 

188 , 濮阳市 , 2015-11-22 , 40 

189 , 许昌市 , 2015-11-22 , 50 

190 , 漯河市 , 2015-11-22 , 50 

191 , 三门峡市 , 2015-11-22 , 70 

192 , 南阳市 , 2015-11-22 , 45 

193 , 商丘市 , 2015-11-22 , 43 

194 , 信阳市 , 2015-11-22 , 57 

195 , 周口市 , 2015-11-22 , 57 

196 , 驻马店市 , 2015-11-22 , 55 

197 , 武汉市 , 2015-11-22 , 63 

198 , 黄石市 , 2015-11-22 , 63 

199 , 十堰市 , 2015-11-22 , 46 

200 , 宜昌市 , 2015-11-22 , 43 

201 , 襄阳市 , 2015-11-22 , 49 

202 , 鄂州市 , 2015-11-22 , 72 

203 , 荆门市 , 2015-11-22 , 38 

204 , 孝感市 , 2015-11-22 , 60 

205 , 荆州市 , 2015-11-22 , 46 

206 , 黄冈市 , 2015-11-22 , 54 

207 , 咸宁市 , 2015-11-22 , 57 

208 , 随州市 , 2015-11-22 , 51 

209 , 恩施州 , 2015-11-22 , 44 

210 , 长沙市 , 2015-11-22 , 58 

211 , 株洲市 , 2015-11-22 , 64 

212 , 湘潭市 , 2015-11-22 , 65 

213 , 衡阳市 , 2015-11-22 , 54 

214 , 邵阳市 , 2015-11-22 , 40 

215 , 岳阳市 , 2015-11-22 , 69 

216 , 常德市 , 2015-11-22 , 50 

217 , 张家界市 , 2015-11-22 , 47 

218 , 益阳市 , 2015-11-22 , 57 

219 , 郴州市 , 2015-11-22 , 54 

220 , 永州市 , 2015-11-22 , 42 

221 , 怀化市 , 2015-11-22 , 55 

222 , 娄底市 , 2015-11-22 , 45 

223 , 湘西州 , 2015-11-22 , 49 

224 , 广州市 , 2015-11-22 , 51 

225 , 韶关市 , 2015-11-22 , 32 

226 , 深圳市 , 2015-11-22 , 64 

227 , 珠海市 , 2015-11-22 , 85 

228 , 汕头市 , 2015-11-22 , 73 

229 , 佛山市 , 2015-11-22 , 55 

230 , 江门市 , 2015-11-22 , 59 

231 , 湛江市 , 2015-11-22 , 78 

232 , 茂名市 , 2015-11-22 , 69 

233 , 肇庆市 , 2015-11-22 , 62 

234 , 惠州市 , 2015-11-22 , 53 

235 , 梅州市 , 2015-11-22 , 52 

236 , 汕尾市 , 2015-11-22 , 75 

237 , 河源市 , 2015-11-22 , 42 

238 , 阳江市 , 2015-11-22 , 85 

239 , 清远市 , 2015-11-22 , 31 

240 , 东莞市 , 2015-11-22 , 65 

241 , 中山市 , 2015-11-22 , 80 

242 , 潮州市 , 2015-11-22 , 69 

243 , 揭阳市 , 2015-11-22 , 67 

244 , 云浮市 , 2015-11-22 , 50 

245 , 南宁市 , 2015-11-22 , 59 

246 , 柳州市 , 2015-11-22 , 50 

247 , 桂林市 , 2015-11-22 , 45 

248 , 梧州市 , 2015-11-22 , 42 

249 , 北海市 , 2015-11-22 , 55 

250 , 防城港市 , 2015-11-22 , 55 

251 , 钦州市 , 2015-11-22 , 57 

252 , 贵港市 , 2015-11-22 , 53 

253 , 玉林市 , 2015-11-22 , 60 

254 , 百色市 , 2015-11-22 , 58 

255 , 贺州市 , 2015-11-22 , 28 

256 , 河池市 , 2015-11-22 , 63 

257 , 来宾市 , 2015-11-22 , 34 

258 , 崇左市 , 2015-11-22 , 54 

259 , 海口市 , 2015-11-22 , 44 

260 , 三亚市 , 2015-11-22 , 26 

261 , 重庆市 , 2015-11-22 , 75 

262 , 成都市 , 2015-11-22 , 78 

263 , 自贡市 , 2015-11-22 , 89 

264 , 攀枝花市 , 2015-11-22 , 70 

265 , 泸州市 , 2015-11-22 , 105 

266 , 德阳市 , 2015-11-22 , 56 

267 , 绵阳市 , 2015-11-22 , 52 

268 , 广元市 , 2015-11-22 , 47 

269 , 遂宁市 , 2015-11-22 , 57 

270 , 内江市 , 2015-11-22 , 74 

271 , 乐山市 , 2015-11-22 , 72 

272 , 南充市 , 2015-11-22 , 68 

273 , 眉山市 , 2015-11-22 , 67 

274 , 宜宾市 , 2015-11-22 , 104 

275 , 广安市 , 2015-11-22 , 50 

276 , 达州市 , 2015-11-22 , 62 

277 , 雅安市 , 2015-11-22 , 51 

278 , 巴中市 , 2015-11-22 , 52 

279 , 资阳市 , 2015-11-22 , 59 

280 , 阿坝州 , 2015-11-22 , 37 

281 , 甘孜州 , 2015-11-22 , 55 

282 , 凉山州 , 2015-11-22 , 62 

283 , 贵阳市 , 2015-11-22 , 39 

284 , 六盘水市 , 2015-11-22 , 59 

285 , 遵义市 , 2015-11-22 , 52 

286 , 安顺市 , 2015-11-22 , 32 

287 , 铜仁地区 , 2015-11-22 , 34 

288 , 黔西南州 , 2015-11-22 , 37 

289 , 毕节市 , 2015-11-22 , 59 

290 , 黔东南州 , 2015-11-22 , 38 

291 , 黔南州 , 2015-11-22 , 39 

292 , 昆明市 , 2015-11-22 , 59 

293 , 曲靖市 , 2015-11-22 , 42 

294 , 玉溪市 , 2015-11-22 , 48 

295 , 保山市 , 2015-11-22 , 58 

296 , 昭通市 , 2015-11-22 , 87 

297 , 丽江市 , 2015-11-22 , 57 

298 , 普洱市 , 2015-11-22 , 48 

299 , 临沧市 , 2015-11-22 , 38 

300 , 楚雄州 , 2015-11-22 , 51 

301 , 红河州 , 2015-11-22 , 44 

302 , 文山州 , 2015-11-22 , 55 

303 , 西双版纳州 , 2015-11-22 , 53 

304 , 大理州 , 2015-11-22 , 36 

305 , 德宏州 , 2015-11-22 , 65 

306 , 怒江州 , 2015-11-22 , 43 

307 , 迪庆州 , 2015-11-22 , 52 

308 , 拉萨市 , 2015-11-22 , 79 

309 , 昌都地区 , 2015-11-22 , 86 

310 , 山南地区 , 2015-11-22 , 56 

311 , 日喀则地区 , 2015-11-22 , 99 

312 , 那曲地区 , 2015-11-22 , 169 

313 , 阿里地区 , 2015-11-22 , 44 

314 , 林芝地区 , 2015-11-22 , 50 

315 , 西安市 , 2015-11-22 , 62 

316 , 铜川市 , 2015-11-22 , 55 

317 , 宝鸡市 , 2015-11-22 , 65 

318 , 咸阳市 , 2015-11-22 , 47 

319 , 渭南市 , 2015-11-22 , 71 

320 , 延安市 , 2015-11-22 , 56 

321 , 汉中市 , 2015-11-22 , 39 

322 , 榆林市 , 2015-11-22 , 47 

323 , 安康市 , 2015-11-22 , 38 

324 , 商洛市 , 2015-11-22 , 44 

325 , 兰州市 , 2015-11-22 , 87 

326 , 嘉峪关市 , 2015-11-22 , 52 

327 , 金昌市 , 2015-11-22 , 59 

328 , 白银市 , 2015-11-22 , 69 

329 , 天水市 , 2015-11-22 , 62 

330 , 武威市 , 2015-11-22 , 44 

331 , 张掖市 , 2015-11-22 , 55 

332 , 平凉市 , 2015-11-22 , 49 

333 , 酒泉市 , 2015-11-22 , 43 

334 , 庆阳市 , 2015-11-22 , 51 

335 , 定西市 , 2015-11-22 , 65 

336 , 陇南市 , 2015-11-22 , 52 

337 , 临夏州 , 2015-11-22 , 64 

338 , 甘南州 , 2015-11-22 , 61 

339 , 西宁市 , 2015-11-22 , 113 

340 , 海东地区 , 2015-11-22 , 68 

341 , 海北州 , 2015-11-22 , 62 

342 , 黄南州 , 2015-11-22 , 78 

343 , 海南州 , 2015-11-22 , 48 

344 , 果洛州 , 2015-11-22 , 131 

345 , 玉树州 , 2015-11-22 , 52 

346 , 海西州 , 2015-11-22 , 64 

347 , 银川市 , 2015-11-22 , 87 

348 , 石嘴山市 , 2015-11-22 , 80 

349 , 吴忠市 , 2015-11-22 , 92 

350 , 固原市 , 2015-11-22 , 58 

351 , 中卫市 , 2015-11-22 , 78 

352 , 乌鲁木齐市 , 2015-11-22 , 64 

353 , 克拉玛依市 , 2015-11-22 , 51 

354 , 吐鲁番地区 , 2015-11-22 , 169 

355 , 哈密地区 , 2015-11-22 , 62 

356 , 昌吉州 , 2015-11-22 , 53 

357 , 博州 , 2015-11-22 , None 

358 , 库尔勒市 , 2015-11-22 , 62 

359 , 阿克苏地区 , 2015-11-22 , 144 

360 , 克州 , 2015-11-22 , 97 

361 , 喀什地区 , 2015-11-22 , 180 

362 , 和田地区 , 2015-11-22 , 95 

363 , 伊犁哈萨克州 , 2015-11-22 , 89 

364 , 塔城地区 , 2015-11-22 , 50 

365 , 阿勒泰地区 , 2015-11-22 , 41 

366 , 石河子市 , 2015-11-22 , 52 

367 , 五家渠市 , 2015-11-22 , 33 

注意:第106行的AQI为None

106 , 诸暨市 , 2015-11-22 , None
In [65]:
str(None)
Out[65]:
'None'

最后一步是将所有这些输出内容写入一个文件。要做到这一步,我们需要两个命令:OPEN 告诉Python用什么文件名。a意味逐行添加的方式写入该文件,encode="utf-8"告诉Python如何把中文写入该文件。

In [64]:
for pageNum in range(1, 14):
    
    content = urllib2.urlopen(urlBase + str(pageNum)).read() #获取网页的html文本
    soup = BeautifulSoup(content) 
    table = soup.find("table", { "id" : "report1" })
    
    for row in table.findAll("tr"):
        cells = row.findAll("td")
        rowNumber = cells[0].find(text = True)
        
        if rowNumber != None and rowNumber.isdigit():
            cityName = cells[1].find(text = True)
            date = cells[2].find(text = True)
            AQI = cells[3].find(text = True)

            line =  rowNumber +','+ cityName+','+date+ ','+ str(AQI)+ '\n'            
            with open('airquality.csv', 'a') as p:
                p.write(line.encode('utf-8'))
In [ ]: