Python天气预报采集器实现代码(网页爬虫)


Posted in Python onOctober 07, 2012

爬虫简单说来包括两个步骤:获得网页文本、过滤得到数据。

1、获得html文本。

python在获取html方面十分方便,寥寥数行代码就可以实现我们需要的功能。

def getHtml(url): 
page = urllib.urlopen(url) 
html = page.read() 
page.close() 
return html

这么几行代码相信不用注释都能大概知道它的意思。

2、根据正则表达式等获得需要的内容。

使用正则表达式时需要仔细观察该网页信息的结构,并写出正确的正则表达式。

python正则表达式的使用也很简洁。我的上一篇文章《Python的一些用法》介绍了一点正则的用法。这里需要一个新的用法:

def getWeather(html): 
reg = '<a title=.*?>(.*?)</a>.*?<span>(.*?)</span>.*?<b>(.*?)</b>' 
weatherList = re.compile(reg).findall(html) 
return weatherList

其中reg是正则表达式,html是第一步获得的文本。findall的作用是找到html中所有符合正则匹配的字符串并存放到weatherList中。之后再枚举weatheList中的数据输出即可。

这里的正则表达式reg有两个地方要注意。

一个是“(.*?)”。只要是()中的内容都是我们将要获得的内容,如果有多个括号,那么findall的每个结果就都包含这几个括号中的内容。上面有三个括号,分别对应城市、最低温和最高温。

另一个是“.*?”。python的正则匹配默认是贪婪的,即默认尽可能多地匹配字符串。如果在末尾加上问号,则表示非贪婪模式,即尽可能少地匹配字符串。在这里,由于有多个城市的信息需要匹配,所以需要使用非贪婪模式,否则匹配结果只剩下一个,且是不正确的。


python的使用确实十分方便:)

Python 相关文章推荐
python设置windows桌面壁纸的实现代码
Jan 28 Python
在Django的模板中使用认证数据的方法
Jul 23 Python
Python中super()函数简介及用法分享
Jul 11 Python
基于python OpenCV实现动态人脸检测
May 25 Python
详解Numpy中的广播原则/机制
Sep 20 Python
Python操作MySQL数据库的两种方式实例分析【pymysql和pandas】
Mar 18 Python
Python语言进阶知识点总结
May 28 Python
python递归法实现简易连连看小游戏
Mar 25 Python
pytorch中tensor张量数据类型的转化方式
Dec 31 Python
python实现单目标、多目标、多尺度、自定义特征的KCF跟踪算法(实例代码)
Jan 08 Python
django在保存图像的同时压缩图像示例代码详解
Feb 11 Python
深入了解NumPy 高级索引
Jul 24 Python
python代码检查工具pylint 让你的python更规范
Sep 05 #Python
python 基础学习第二弹 类属性和实例属性
Aug 27 #Python
用Python写的图片蜘蛛人代码
Aug 27 #Python
Python模块学习 filecmp 文件比较
Aug 27 #Python
Python模块学习 datetime介绍
Aug 27 #Python
Python运行的17个时新手常见错误小结
Aug 07 #Python
Python 代码性能优化技巧分享
Aug 07 #Python
You might like
用PHP实现的四则运算表达式计算实现代码
2011/08/02 PHP
Centos PHP 扩展Xchche的安装教程
2016/07/09 PHP
Yii框架表单提交验证功能分析
2017/01/07 PHP
Ajax+PHP实现的模拟进度条功能示例
2019/02/11 PHP
js png图片(有含有透明)在IE6中为什么不透明了
2010/02/07 Javascript
jQuery源码分析-01总体架构分析
2011/11/14 Javascript
JS getAttribute和setAttribute(取得和设置属性)的使用介绍
2013/07/10 Javascript
jquery插件jTimer(jquery定时器)使用方法
2013/12/23 Javascript
jQuery实现的多选框多级联动插件
2014/05/02 Javascript
form.submit()不能提交表单的原因分析
2014/10/23 Javascript
对js中回调函数的一些看法
2016/08/29 Javascript
jquery实现全选、全不选以及单选功能
2017/03/23 jQuery
knockoutjs模板实现树形结构列表
2017/07/31 Javascript
Vue中的ref作用详解(实现DOM的联动操作)
2017/08/21 Javascript
微信小程序自定义带价格显示日历效果
2018/12/29 Javascript
vue项目创建并引入饿了么elementUI组件的步骤
2019/04/11 Javascript
JavaScript实现简单的计算器
2020/01/16 Javascript
如何在JS文件中获取Vue组件
2020/09/16 Javascript
在实例中重学JavaScript事件循环
2020/12/03 Javascript
Python数据结构与算法之图的广度优先与深度优先搜索算法示例
2017/12/14 Python
在mac下查找python包存放路径site-packages的实现方法
2018/11/06 Python
Django框架表单操作实例分析
2019/11/04 Python
如何用用Python将地址标记在地图上
2021/02/07 Python
马来西亚在线购物市场:PGMall.my
2019/10/13 全球购物
Windows和Linux动态库应用异同
2016/04/17 面试题
二年级评语大全
2014/04/23 职场文书
难忘的一天教学反思
2014/04/30 职场文书
物业管理工作方案
2014/05/10 职场文书
预防传染病方案
2014/06/14 职场文书
党支部特色活动方案
2014/08/20 职场文书
上党课的心得体会
2014/09/02 职场文书
党员个人整改措施
2014/10/24 职场文书
2014年后勤工作总结
2014/11/18 职场文书
2015年挂职锻炼工作总结
2014/12/12 职场文书
大学生党课感想
2015/08/11 职场文书
web前端之css水平居中代码解析
2021/05/20 HTML / CSS