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中使用pngquant压缩png图片的教程
Apr 09 Python
Linux下将Python的Django项目部署到Apache服务器
Dec 24 Python
Python数据结构与算法之链表定义与用法实例详解【单链表、循环链表】
Sep 28 Python
python里使用正则的findall函数的实例详解
Oct 19 Python
Python实现聊天机器人的示例代码
Jul 09 Python
使用sklearn进行对数据标准化、归一化以及将数据还原的方法
Jul 11 Python
python感知机实现代码
Jan 18 Python
Python面向对象总结及类与正则表达式详解
Apr 18 Python
python实现两个dict合并与计算操作示例
Jul 01 Python
Python如何计算语句执行时间
Nov 22 Python
Django model class Meta原理解析
Nov 14 Python
使用numpngw和matplotlib生成png动画的示例代码
Jan 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
高分R级DC动画剧《哈莉·奎茵》第二季正式预告首发
2020/04/09 欧美动漫
php取整函数ceil,floo,round的用法及介绍
2013/08/31 PHP
php实现约瑟夫问题的方法小结
2015/03/23 PHP
thinkPHP自定义类实现方法详解
2016/11/30 PHP
弹出模态框modal的实现方法及实例
2017/09/19 PHP
javascript实现unicode和字符的互相转换
2007/07/18 Javascript
js 调整select 位置的函数
2008/02/21 Javascript
Microsoft Ajax Minifier 压缩javascript的方法
2010/03/05 Javascript
jQuery 下拉列表 二级联动插件分享
2012/03/29 Javascript
JavaScript 基础篇之运算符、语句(二)
2012/04/07 Javascript
javascript中[]和{}对象使用介绍
2013/03/20 Javascript
JavaScript DOM操作表格及样式
2015/04/13 Javascript
JS+CSS实现的竖向简洁折叠菜单效果代码
2015/10/22 Javascript
jsonp跨域请求数据实现手机号码查询实例分析
2015/12/12 Javascript
AngularJS框架的ng-app指令与自动加载实现方法分析
2017/01/04 Javascript
微信小程序 标签传入数据
2017/05/08 Javascript
vue中如何使用ztree
2018/02/06 Javascript
angularJS的radio实现单项二选一的使用方法
2018/02/28 Javascript
Vue+Typescript中在Vue上挂载axios使用时报错问题
2019/08/07 Javascript
jquery 键盘事件 keypress() keydown() keyup()用法总结
2019/10/23 jQuery
javascript实现商品图片放大镜
2019/11/28 Javascript
js实现表格单列按字母排序
2020/08/12 Javascript
js实现简易计算器小功能
2020/11/18 Javascript
Python获取DLL和EXE文件版本号的方法
2015/03/10 Python
使用graphics.py实现2048小游戏
2015/03/10 Python
Python中条件判断语句的简单使用方法
2015/08/21 Python
python开发之IDEL(Python GUI)的使用方法图文详解
2015/11/12 Python
python并发编程多进程 模拟抢票实现过程
2019/08/20 Python
matplotlib相关系统目录获取方式小结
2021/02/03 Python
canvas拼图功能实现代码示例
2018/11/21 HTML / CSS
TripAdvisor台湾:全球最大旅游网站
2018/08/26 全球购物
淘宝中秋节活动方案
2014/01/31 职场文书
环保志愿者活动总结
2014/06/27 职场文书
驳回起诉民事裁定书
2015/05/19 职场文书
Python多线程 Queue 模块常见用法
2021/07/04 Python
Mysql超详细讲解死锁问题的理解
2022/04/01 MySQL