爬虫用于从网上得到目标数据,根据需要对其予以利用,加以分析,得到想要的实验成果。现在讲一讲我这两天学到的东西。

第一,爬虫的算法结构,包括以下几个方面:

(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爬虫的一些心得的更多相关文章

  1. python 爬虫抓取心得

    quanwei9958 转自 python 爬虫抓取心得分享 urllib.quote('要编码的字符串') 如果你要在url请求里面放入中文,对相应的中文进行编码的话,可以用: urllib.quo ...

  2. python爬虫学习心得:中国大学排名(附代码)

    今天下午花时间学习了python爬虫的中国大学排名实例,颇有心得,于是在博客园与各位分享 首先直接搬代码: import requests from bs4 import BeautifulSoup ...

  3. 我的第一个Python爬虫——谈心得

    2019年3月27日,继开学到现在以来,开了软件工程和信息系统设计,想来想去也没什么好的题目,干脆就想弄一个实用点的,于是产生了做“学生服务系统”想法.相信各大高校应该都有本校APP或超级课程表之类的 ...

  4. Python 爬虫模拟登陆知乎

    在之前写过一篇使用python爬虫爬取电影天堂资源的博客,重点是如何解析页面和提高爬虫的效率.由于电影天堂上的资源获取权限是所有人都一样的,所以不需要进行登录验证操作,写完那篇文章后又花了些时间研究了 ...

  5. python爬虫知乎

    在之前写过一篇使用python爬虫爬取电影天堂资源的博客,重点是如何解析页面和提高爬虫的效率.由于电影天堂上的资源获取权限是所有人都一样的,所以不需要进行登录验证操作,写完那篇文章后又花了些时间研究了 ...

  6. python爬虫相关

    一.Python re模块的基本用法: https://blog.csdn.net/chenmozhe22/article/details/80601971 二.爬取网页图片 https://www. ...

  7. 孤荷凌寒自学python第六十七天初步了解Python爬虫初识requests模块

    孤荷凌寒自学python第六十七天初步了解Python爬虫初识requests模块 (完整学习过程屏幕记录视频地址在文末) 从今天起开始正式学习Python的爬虫. 今天已经初步了解了两个主要的模块: ...

  8. 自学Python十一 Python爬虫总结

    通过几天的学习与尝试逐渐对python爬虫有了一些小小的心得,我们渐渐发现他们有很多共性,总是要去获取一系列的链接,读取网页代码,获取所需内容然后重复上面的工作,当自己运用的越来越熟练之后我们就会尝试 ...

  9. 我的第一个 python 爬虫脚本

    #!/usr/bin/env python# coding=utf-8import urllib2from bs4 import BeautifulSoup #res = urllib.urlopen ...

随机推荐

  1. jQuery2.x源码解析(缓存篇)

    jQuery2.x源码解析(构建篇) jQuery2.x源码解析(设计篇) jQuery2.x源码解析(回调篇) jQuery2.x源码解析(缓存篇) 缓存是jQuery中的又一核心设计,jQuery ...

  2. [原] KVM虚拟机网络闪断分析

    背景 公司云平台的机器时常会发生网络闪断,通常在10s-100s之间. 异常情况 VM出现问题时,表现出来的情况是外部监控系统无法访问,猜测可能是由于系统假死,OVS链路问题等等.但是在出现网络问题的 ...

  3. c#比较两个数组的差异

    将DataTable中某一列数据直接转换成数组进行比较,使用的Linq,要引用命名空间using System.Linq; string[] arrRate = dtRate.AsEnumerable ...

  4. CSS3 @keyframes 动画

    CSS3的@keyframes,它可以取代许多网页动画图像,Flash动画,和JAVAScripts. CSS3的动画属性 下面的表格列出了 @keyframes 规则和所有动画属性: 浏览器支持 表 ...

  5. iOS 数据存储之SQLite3的使用

    SQLite3是iOS内嵌的数据库,SQLite3在存储和检索大量数据方面非常有效,它使得不必将每个对象都加到内存中.还能够对数据进行负责的聚合,与使用对象执行这些操作相比,获得结果的速度更快. SQ ...

  6. BPM配置故事之案例12-触发另外流程

    还记得阿海么,对就是之前的那个采购员,他又有了些意见. 阿海:小明,你看现在的流程让大家都这么方便,能不能帮个忙让我也轻松点啊-- 小明:--你有什么麻烦,现在不是已经各个部门自己提交申请了嘛? 阿海 ...

  7. 从国内流程管理软件市场份额看中国BPM行业发展

    随着互联网+.中国制造2025.工业4.0等国家战略的支持与引导,企业在数字经济时代的信息化表现惊人,越来越多企业认识到,对于企业的发展来说,信息自动化远远还不够,企业的战略.业务和IT之间需保持高度 ...

  8. Git(1)

    安装Git 完毕 (在开始菜单打开的话,打开的不是你想要的路径,切换路径很麻烦) 1.D盘新建 GitTest 文件夹 2.打开GitTest , 在空白的地方右键, 3.单击 Git Bash He ...

  9. js动态加载css和js

    之前写了一个工具类点此链接里面含有这段代码,感觉用处挺多,特意提出来 var loadUtil = { /* * 方法说明:[动态加载js文件css文件] * 使用方法:loadUtil.loadjs ...

  10. MyBatis2:config.xml文件

    前言 前一篇文章,讲了MyBatis入门,讲到了MyBatis有两个基本的配置文件,一个用来配置环境信息,一个用来写SQL语句.前者我把它命名为config.xml,config.xml的内容是: & ...