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的lambda匿名函数的简单介绍
Apr 25 Python
修改Python的pyxmpp2中的主循环使其提高性能
Apr 24 Python
Python中使用strip()方法删除字符串中空格的教程
May 20 Python
Python文件操作之合并文本文件内容示例代码
Sep 19 Python
TensorFlow神经网络优化策略学习
Mar 09 Python
PyQt5实现下载进度条效果
Apr 19 Python
python进行TCP端口扫描的实现
Dec 21 Python
python requests 库请求带有文件参数的接口实例
Jan 03 Python
Python代码实现删除一个list里面重复元素的方法
Apr 02 Python
Python多线程thread及模块使用实例
Apr 28 Python
Python logging模块异步线程写日志实现过程解析
Jun 30 Python
python使用requests库爬取拉勾网招聘信息的实现
Nov 20 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数组去重实例及分析
2013/11/26 PHP
ThinkPHP模板判断输出Defined标签用法详解
2014/06/30 PHP
PHP常用文件操作函数和简单实例分析
2016/06/03 PHP
php+js实现百度地图多点标注的方法
2016/11/30 PHP
php微信公众号开发之关键词回复
2018/10/20 PHP
JavaScript 错误处理与调试经验总结
2010/08/10 Javascript
鼠标经过显示二级菜单js特效
2013/08/13 Javascript
js select option对象小结
2013/12/20 Javascript
jquery.form.js用法之清空form的方法
2014/03/07 Javascript
JavaScript中的正则表达式简明总结
2014/04/04 Javascript
jQuery中has()方法用法实例
2015/01/06 Javascript
浅谈轻量级js模板引擎simplite
2015/02/13 Javascript
JavaScript知识点总结之如何提高性能
2016/01/15 Javascript
jQuery获取同级元素的简单代码
2016/07/09 Javascript
jQuery弹出窗口打开链接的实现代码
2016/12/24 Javascript
Angularjs 事件指令详细整理
2017/07/27 Javascript
vue2实现可复用的轮播图carousel组件详解
2017/11/27 Javascript
jquery实现楼层滚动效果
2018/01/01 jQuery
Vue Element 分组+多选+可搜索Select选择器实现示例
2018/07/23 Javascript
JavaScript使用享元模式实现文件上传优化操作示例
2018/08/07 Javascript
微信小程序自定义可滑动日历界面
2018/12/28 Javascript
Javascript基于OOP实实现探测器功能代码实例
2020/08/26 Javascript
OpenLayers3实现地图鹰眼以及地图比例尺的添加
2020/09/25 Javascript
[06:04]DOTA2英雄梦之声Vol19卓尔游侠
2014/06/20 DOTA
python3爬虫之设计签名小程序
2018/06/19 Python
python自动发微信监控报警
2019/09/06 Python
Python collections中的双向队列deque简单介绍详解
2019/11/04 Python
numpy 矩阵形状调整:拉伸、变成一位数组的实例
2020/06/18 Python
python中Pexpect的工作流程实例讲解
2021/03/02 Python
儿童生日会策划方案
2014/05/15 职场文书
绿色环保家庭事迹材料
2014/08/31 职场文书
2014领导班子四风剖析对照检查材料思想汇报
2014/09/20 职场文书
教师党员个人自我剖析材料
2014/09/29 职场文书
《工作是最好的修行》读后感3篇
2019/12/13 职场文书
Nginx下配置Https证书详细过程
2021/04/01 Servers
js判断两个数组相等的5种方法
2022/05/06 Javascript