python爬虫的一些心得
2015-10-24 23:30
507 查看
爬虫用于从网上得到目标数据,根据需要对其予以利用,加以分析,得到想要的实验成果。现在讲一讲我这两天学到的东西。
第一,爬虫的算法结构,包括以下几个方面:
(1)读取网络数据
(2)将获取的数据解析为目标格式,进而筛选出想要的数据
(3)将有用数据存于本地数据库中
第二,具体实施方案
(1)读取网络数据,需要用到urllib和urllib2两个库,和需要爬取数据的资源定位符URL。
(2)利用BeautifulSoup将获取的数据解析为目标格式,进而筛选出想要的数据
(3)利用Access,分三步:建立数据库连接 --> 打开一张表 --> 存储数据
时间关系,并没有很仔细的归纳。以后有机会再整理吧。
第一,爬虫的算法结构,包括以下几个方面:
(1)读取网络数据
(2)将获取的数据解析为目标格式,进而筛选出想要的数据
(3)将有用数据存于本地数据库中
第二,具体实施方案
(1)读取网络数据,需要用到urllib和urllib2两个库,和需要爬取数据的资源定位符URL。
通过url,将网页所有数据 1 request = urllib2.request(url) response = urllib2.response(request) html = response.read()
关于url的动态变化 1 url="http://wsbs.bjepb.gov.cn/air2008/Air1.aspx?time=" i=0 for tim in range(1364774400,1365206400,86400): i=i+1 if(i%180==0): time.sleep(15) ltime=time.localtime(tim) timeStr=time.strftime("%Y-%m-%d", ltime) url="http://wsbs.bjepb.gov.cn/air2008/Air1.aspx?time=" url=url+timeStr print url
(2)利用BeautifulSoup将获取的数据解析为目标格式,进而筛选出想要的数据
soup = BeautifulSoup(html,"html.parser") trs = soup.find("table",id="DaliyReportControl1_DataGridDataDic") length = len(trs.contents)
(3)利用Access,分三步:建立数据库连接 --> 打开一张表 --> 存储数据
import win32com.client ##建立数据库连接 conn = win32com.client.Dispatch(r'ADODB.Connection') DSN = 'PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=D:/test.mdb;' conn.Open(DSN) ##打开一个记录集 rs = win32com.client.Dispatch(r'ADODB.Recordset') rs_name = 'aircondition'#表名 rs.Open('[' + rs_name + ']', conn, 1, 3) print rs.RecordCount ************* conn.Close()
for x in range(2,length-1): if(len(trs.contents[x].contents)==8): rs.AddNew() rs.Fields('Station').Value=trs.contents[x].contents[2].string rs.Fields('AQI').Value=trs.contents[x].contents[3].string rs.Fields('Pollutants').Value=trs.contents[x].contents[4].string rs.Fields('Grade').Value=trs.contents[x].contents[5].string rs.Fields('Air_quality').Value=trs.contents[x].contents[6].string rs.Fields('updatedate').Value=timeStr rs.Update() ## print str(x) + "***********8" ## print trs.contents[x].contents[0].string + "," + trs.contents[x].contents[1].string + "," + trs.contents[x].contents[2].string + "," + trs.contents[x].contents[3].string + "," + trs.contents[x].contents[4].string + "," + trs.contents[x].contents[5].string + "," + trs.contents[x].contents[6].string + "," + trs.contents[x].contents[7].string elif(len(trs.contents[x].contents)==7): rs.AddNew() rs.Fields('Station').Value=trs.contents[x].contents[1].string rs.Fields('AQI').Value=trs.contents[x].contents[2].string rs.Fields('Pollutants').Value=trs.contents[x].contents[3].string rs.Fields('Grade').Value=trs.contents[x].contents[4].string rs.Fields('Air_quality').Value=trs.contents[x].contents[5].string rs.Fields('updatedate').Value=timeStr rs.Update() ## print str(x) + "*******" + "7" ## print trs.contents[x].contents[0].string + "," + trs.contents[x].contents[1].string +"," + trs.contents[x].contents[2].string + "," + trs.contents[x].contents[3].string + "," + trs.contents[x].contents[4].string + "," + trs.contents[x].contents[5].string + "," + trs.contents[x].contents[6].string print "**************"+str(i)+"***********" + str(timeStr)+"**************"
时间关系,并没有很仔细的归纳。以后有机会再整理吧。
相关文章推荐
- python正则表达式
- python 用requests模块自动登录
- 在Ubuntu上安装OpenCV3.0和Python-openCV的经历
- python开发环境必备之vim配置
- Python下载及Python环境变量的配置
- leetcode之Binary Tree Inorder Traversal
- python自学之文件
- python学习笔记(三)条件判断和循环
- python regex 入门笔记
- python日志管理模块logging学习
- leetcode之Kth Smallest Element in a BST
- python time模块详解
- python学习笔记(二)list和tuple类型
- python学习笔记(一)变量和数据类型
- python ctypes 探究 ---- python 与 c 的交互
- PageRank算法 python单机实现
- 分享一个解析html的python的框架--AdvancedHTMLParser
- python自学之异常
- Python进阶教程
- Python---类的"__new__"和"__init__"方法