小组名称:chengjun
print range(5)
[0, 1, 2, 3, 4]
for i in range(5):
print i
0 1 2 3 4
大家好,欢迎使用ipython notebook来完成我们的编程作业。开始之前,请确保已经安装好beautifulsoup。
import urllib2#调用urllib2
from bs4 import BeautifulSoup
import os
# set work directory
# 注意请调整以下路径名为你想要的路径
os.chdir('/Users/chengjun/百度云同步盘/')
url='http://jc.nju.edu.cn'
html=urllib2.urlopen(url).read()
#print html
soup = BeautifulSoup(html)
print soup.title.text
南京大学新闻传播学院
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博士之家学术午餐会第三季第 我院聘任第一批新闻传播专业硕士校外导师
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
for page_num in range(0,3):
print (page_num)
crawler(page_num, 'wumai_first_4_pages.txt')
0 1 2
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
做过从网页抓取元素的基本练习后,我们现在要把数据抓取程序扩用到几百个网页,从其中每 个网页上的表格抓取干净的数据。
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" })
运行此程序,产生的内容部分应当如下:
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&graphId=114628&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的意思是“表格里的行”, 所以清单里每个内容都是 一行数据。我们打印时在每行之间都加了横线,以使得打印结果更容易看。
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&graphId=114628&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来获得一个列出那行中单元格的清单,然后用方括号[ ] 来标明该清单中的单个项。我们这样来获得每行里每个单元格的数据。
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 来查看行数。
现在我们可以使用这一原则来只打印包含数据的行。
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开始,见下:
urlBase = "http://datacenter.mep.gov.cn/report/air_daily/air_dairy.jsp?page="
然后我们用一个for环针对每页来运转主编码部分一次。虽然页数是从1到 13, 我们得用 ( 1,14)这样一个范围,因为范围实际上数到比上限数小一。 (Python的设计是这样,使得(a,b )序列和(b,c)序列连接起来时数字没有重复或缺失)。
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
str(None)
'None'
最后一步是将所有这些输出内容写入一个文件。要做到这一步,我们需要两个命令:OPEN 告诉Python用什么文件名。a意味逐行添加的方式写入该文件,encode="utf-8"告诉Python如何把中文写入该文件。
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'))