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中工作日类库Busines Holiday的介绍与使用
Jul 06 Python
Python 处理数据的实例详解
Aug 10 Python
linux下python使用sendmail发送邮件
May 22 Python
Python之dict(或对象)与json之间的互相转化实例
Jun 05 Python
详解django中使用定时任务的方法
Sep 27 Python
python 实现对文件夹中的图像连续重命名方法
Oct 25 Python
Python生成rsa密钥对操作示例
Apr 26 Python
解决Djang2.0.1中的reverse导入失败的问题
Aug 16 Python
python实现一个函数版的名片管理系统过程解析
Aug 27 Python
Python collections.defaultdict模块用法详解
Jun 18 Python
Python requests接口测试实现代码
Sep 08 Python
详解python的xlwings库读写excel操作总结
Feb 26 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 strlen mb_strlen计算中英文混排字符串长度
2009/07/10 PHP
PHP 单引号与双引号的区别
2009/11/24 PHP
PHP合并数组的2种方法小结
2016/11/24 PHP
Yii2.0 RESTful API 基础配置教程详解
2018/12/26 PHP
php过滤htmlspecialchars() 函数实现把预定义的字符转换为 HTML 实体用法分析
2019/06/25 PHP
PHP+ajax实现上传、删除、修改单张图片及后台处理逻辑操作详解
2020/02/12 PHP
PHP8.0新功能之Match表达式的使用
2020/07/19 PHP
9个JavaScript评级/投票插件
2010/01/18 Javascript
jquery等待效果示例
2014/05/01 Javascript
jquery实现图片按比例缩放示例
2014/07/01 Javascript
js实现超简单的展开、折叠目录代码
2015/08/28 Javascript
jQuery中通过ajax调用webservice传递数组参数的问题实例详解
2016/05/20 Javascript
基于Bootstrap的后台管理面板 Bootstrap Metro Dashboard
2016/06/17 Javascript
详解微信小程序Radio选中样式切换
2017/07/06 Javascript
jquery tmpl模板(实例讲解)
2017/09/02 jQuery
bootstrap中日历范围选择插件daterangepicker的使用详解
2018/04/17 Javascript
解决jquery的ajax调取后端数据成功却渲染失败的问题
2018/08/08 jQuery
vue+render+jsx实现可编辑动态多级表头table的实例代码
2020/04/01 Javascript
Python入门篇之字典
2014/10/17 Python
python中while循环语句用法简单实例
2015/05/07 Python
Python中特殊函数集锦
2015/07/27 Python
Python实现微信消息防撤回功能的实例代码
2019/04/29 Python
Python机器学习算法库scikit-learn学习之决策树实现方法详解
2019/07/04 Python
Python tkinter和exe打包的方法
2020/02/05 Python
django中的数据库迁移的实现
2020/03/16 Python
CSS3实现大小不一的粒子旋转加载动画
2016/04/21 HTML / CSS
澳大利亚足球鞋和服装购物网站:Ultra Football
2018/10/11 全球购物
定义一结构体变量,用其表示点坐标,并输入两点坐标,求两点之间的距离
2015/08/17 面试题
推荐信模板
2014/05/09 职场文书
2014年秋季新学期寄语
2014/08/02 职场文书
ktv好的活动方案
2014/08/15 职场文书
七一建党日演讲稿
2014/09/05 职场文书
政风行风评议工作总结
2014/10/21 职场文书
医生个人年度总结
2015/02/28 职场文书
2015年教务主任工作总结
2015/07/22 职场文书
2016年记者节感言
2015/12/08 职场文书