python爬虫的一些心得
爬虫用于从网上得到目标数据,根据需要对其予以利用,加以分析,得到想要的实验成果。现在讲一讲我这两天学到的东西。
第一,爬虫的算法结构,包括以下几个方面:
(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 爬虫抓取心得
quanwei9958 转自 python 爬虫抓取心得分享 urllib.quote('要编码的字符串') 如果你要在url请求里面放入中文,对相应的中文进行编码的话,可以用: urllib.quo ...
- python爬虫学习心得:中国大学排名(附代码)
今天下午花时间学习了python爬虫的中国大学排名实例,颇有心得,于是在博客园与各位分享 首先直接搬代码: import requests from bs4 import BeautifulSoup ...
- 我的第一个Python爬虫——谈心得
2019年3月27日,继开学到现在以来,开了软件工程和信息系统设计,想来想去也没什么好的题目,干脆就想弄一个实用点的,于是产生了做“学生服务系统”想法.相信各大高校应该都有本校APP或超级课程表之类的 ...
- Python 爬虫模拟登陆知乎
在之前写过一篇使用python爬虫爬取电影天堂资源的博客,重点是如何解析页面和提高爬虫的效率.由于电影天堂上的资源获取权限是所有人都一样的,所以不需要进行登录验证操作,写完那篇文章后又花了些时间研究了 ...
- python爬虫知乎
在之前写过一篇使用python爬虫爬取电影天堂资源的博客,重点是如何解析页面和提高爬虫的效率.由于电影天堂上的资源获取权限是所有人都一样的,所以不需要进行登录验证操作,写完那篇文章后又花了些时间研究了 ...
- python爬虫相关
一.Python re模块的基本用法: https://blog.csdn.net/chenmozhe22/article/details/80601971 二.爬取网页图片 https://www. ...
- 孤荷凌寒自学python第六十七天初步了解Python爬虫初识requests模块
孤荷凌寒自学python第六十七天初步了解Python爬虫初识requests模块 (完整学习过程屏幕记录视频地址在文末) 从今天起开始正式学习Python的爬虫. 今天已经初步了解了两个主要的模块: ...
- 自学Python十一 Python爬虫总结
通过几天的学习与尝试逐渐对python爬虫有了一些小小的心得,我们渐渐发现他们有很多共性,总是要去获取一系列的链接,读取网页代码,获取所需内容然后重复上面的工作,当自己运用的越来越熟练之后我们就会尝试 ...
- 我的第一个 python 爬虫脚本
#!/usr/bin/env python# coding=utf-8import urllib2from bs4 import BeautifulSoup #res = urllib.urlopen ...
随机推荐
- peer not authenticated的终极解决方案
一.前述 使用httpclient发起https请求时,可能会遇到如下异常: javax.net.ssl.SSLPeerUnverifiedException: peer not authentica ...
- 编写高质量代码:改善Java程序的151个建议(第8章:异常___建议114~117)
建议114:不要在构造函数中抛出异常 Java异常的机制有三种: Error类及其子类表示的是错误,它是不需要程序员处理也不能处理的异常,比如VirtualMachineError虚拟机错误,Thre ...
- 如何使用本地账户"完整"安装 SharePoint Server 2010+解决“New-SPConfigurationDatabase : 无法连接到 SharePoint_Config 的 SQL Server 的数据 库 master。此数据库可能不存在,或当前用户没有连接权限。”
注:目前看到的解决本地账户完整安装SharePoint Server 2010的解决方案如下,但是,有但是的哦: 当我们选择了"完整"模式安装SharePointServer201 ...
- 为什么很多SaaS企业级产品都熬不过第一年
因工作缘由,笔者与周边数位SaaS企业级应用的创始人.运营负责人有过深入接触,发现一个有趣的现象:刚起步时,蓝图远志.规划清晰,但是一路下来,却异常艰难,有些甚至熬不过第一年,就关门歇业. 2015年 ...
- Git(1)
安装Git 完毕 (在开始菜单打开的话,打开的不是你想要的路径,切换路径很麻烦) 1.D盘新建 GitTest 文件夹 2.打开GitTest , 在空白的地方右键, 3.单击 Git Bash He ...
- SSIS 包部署 Package Store 后,在 IS 中可以执行,AGENT 执行却报错
可以执行 SSIS Package ,证明用 SSIS Package 的账户是可以执行成功的.SQL Server Agent 默认指定账号是 Network Service. 那么可以尝试一下将 ...
- CentOS上 Mono 3.2.8运行ASP.NET MVC4经验
周一到周三,折腾了两天半的时间,经历几次周折,在小蝶惊鸿的鼎力帮助下,终于在Mono 3.2.8上运行成功MVC4.在此总结经验如下: 系统平台的版本: CentOS 6.5 Mono 3.2.8 J ...
- EasyPR--开发详解(8)文字定位
今天我们来介绍车牌定位中的一种新方法--文字定位方法(MSER),包括其主要设计思想与实现.接着我们会介绍一下EasyPR v1.5-beta版本中带来的几项改动. 一. 文字定位法 在EasyPR前 ...
- [翻译]AKKA笔记 - CHILD ACTORS与ACTORPATH -6
原文:http://rerun.me/2014/10/21/akka-notes-child-actors-and-path/ Actor是完全的继承结构.你创建的任何Actor肯定都是一个其他Act ...
- Atitit MATLAB 图像处理attilax总结
Atitit MATLAB 图像处理attilax总结 1.1. 下载 Matlab7.0官方下载_Matlab2012 v7.0 官方简体中文版-办公软件-系统大全.html1 1.2. Matla ...