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 相关文章推荐
把MySQL表结构映射为Python中的对象的教程
Apr 07 Python
Python3 XML 获取雅虎天气的实现方法
Feb 01 Python
Python简单生成随机数的方法示例
Mar 31 Python
用TensorFlow实现戴明回归算法的示例
May 02 Python
python 筛选数据集中列中value长度大于20的数据集方法
Jun 14 Python
在python带权重的列表中随机取值的方法
Jan 23 Python
Python使用Opencv实现图像特征检测与匹配的方法
Oct 30 Python
Python Scrapy图片爬取原理及代码实例
Jun 12 Python
详解python中的lambda与sorted函数
Sep 04 Python
Python中tkinter的用户登录管理的实现
Apr 22 Python
教你怎么用Python selenium操作浏览器对象的基础API
Jun 23 Python
Python中np.random.randint()参数详解及用法实例
Sep 23 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 ajax 分页类代码
2008/11/13 PHP
PHP网站安装程序制作的原理、步骤、注意事项和示例代码
2010/08/01 PHP
php 中英文语言转换类
2011/09/07 PHP
如何用PHP实现插入排序?
2013/04/10 PHP
浅析使用Turck-mmcache编译来加速、优化PHP代码
2013/06/20 PHP
php查看请求头信息获取远程图片大小的方法分享
2013/12/25 PHP
PHP图片处理之使用imagecopyresampled函数实现图片缩放例子
2014/11/19 PHP
PHP实现的下载远程文件类定义与用法示例
2017/07/05 PHP
php微信开发之音乐回复功能
2018/06/14 PHP
PHP反射原理与用法深入分析
2019/09/28 PHP
一些易混淆且不常用的属性,希望有用
2007/01/29 Javascript
JavaScript 继承详解(一)
2009/07/13 Javascript
Javascript(AJAX)解析XML的代码(兼容FIREFOX/IE)
2010/07/11 Javascript
根据表格中的某一列进行排序的javascript代码
2013/11/29 Javascript
js利用prototype调用Array的slice方法示例
2014/06/09 Javascript
jQuery实现验证年龄简单思路
2016/02/24 Javascript
JS三级可折叠菜单实现方法
2016/02/29 Javascript
通过Tabs方法基于easyUI+bootstrap制作工作站
2016/03/28 Javascript
移动端滑动插件Swipe教程
2016/10/16 Javascript
原生js实现倒计时功能(多种格式调用)
2017/01/12 Javascript
详解nodejs实现本地上传图片并预览功能(express4.0+)
2017/06/28 NodeJs
详解angularjs 学习之 scope作用域
2018/01/15 Javascript
详解几十行代码实现一个vue的状态管理
2019/01/28 Javascript
微信小程序五子棋游戏的棋盘,重置,对弈实现方法【附demo源码下载】
2019/02/20 Javascript
mpvue微信小程序多列选择器用法之省份城市选择的实现
2019/03/07 Javascript
解决layer.confirm选择完之后消息框不消失的问题
2019/09/16 Javascript
微信小程序接入vant Weapp组件的详细步骤
2020/10/28 Javascript
Python实现批量下载图片的方法
2015/07/08 Python
浅谈Python 列表字典赋值的陷阱
2019/01/20 Python
基于python计算滚动方差(标准差)talib和pd.rolling函数差异详解
2020/06/08 Python
python中lower函数实现方法及用法讲解
2020/12/23 Python
美国老牌主机服务商:iPage
2016/07/22 全球购物
欧洲最大的滑雪假期供应商之一:Sunweb Holidays
2018/01/06 全球购物
英国第一的滑雪服装和装备零售商:Snow+Rock
2020/02/01 全球购物
个人思想理论学习的自我鉴定
2013/11/30 职场文书
学校艾滋病宣传活动总结
2015/05/09 职场文书