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设计模式编程之桥接模式的运用
Mar 02 Python
django框架auth模块用法实例详解
Dec 10 Python
浅析Python3 pip换源问题
Jan 06 Python
tensorflow 环境变量设置方式
Feb 06 Python
Python图像处理库PIL的ImageDraw模块介绍详解
Feb 26 Python
在django中使用post方法时,需要增加csrftoken的例子
Mar 13 Python
pycharm sciview的图片另存为操作
Jun 01 Python
tensorflow之读取jpg图像长和宽实例
Jun 18 Python
Python压缩模块zipfile实现原理及用法解析
Aug 14 Python
python中翻译功能translate模块实现方法
Dec 17 Python
python人工智能human learn绘图可创建机器学习模型
Nov 23 Python
python中redis包操作数据库的教程
Apr 19 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检测移动设备类mobile detection使用实例
2014/04/14 PHP
PHP数组生成XML格式数据的封装类实例
2016/11/10 PHP
PHP解压ZIP文件到指定文件夹的方法
2016/11/17 PHP
初窥JQuery(二)事件机制(2)
2010/12/06 Javascript
在Windows上安装Node.js模块的方法
2011/09/25 Javascript
jquery中文乱码的多种解决方法
2013/06/21 Javascript
js propertychange和oninput事件
2014/09/28 Javascript
IE6/IE7中JavaScript json提示缺少标识符、字符串或数字问题处理
2014/12/16 Javascript
javascript排序函数实现数字排序
2015/06/26 Javascript
浅析JavaScript访问对象属性和方法及区别
2015/11/16 Javascript
Boostrap基础教程之JavaScript插件篇
2016/09/08 Javascript
使用BootStrapValidator完成前端输入验证
2016/09/28 Javascript
javascript常用经典算法详解
2017/01/11 Javascript
react-router实现跳转传值的方法示例
2017/05/27 Javascript
浅谈webpack 自动刷新与解析
2018/04/09 Javascript
基于vue中对鼠标划过事件的处理方式详解
2018/08/22 Javascript
vue中上传视频或图片或图片和文字一起到后端的解决方法
2019/12/01 Javascript
JS面向对象之多选框实现
2020/01/17 Javascript
微信小程序自定义modal弹窗组件的方法详解
2020/12/20 Javascript
决策树的python实现方法
2014/11/18 Python
Python+OpenCV实现车牌字符分割和识别
2018/03/31 Python
浅谈Python中(&amp;,|)和(and,or)之间的区别
2019/08/07 Python
利用pandas将非数值数据转换成数值的方式
2019/12/18 Python
python列表删除和多重循环退出原理详解
2020/03/26 Python
python 安装impala包步骤
2020/03/28 Python
pyCharm 设置调试输出窗口中文显示方式(字符码转换)
2020/06/09 Python
2021年的Python 时间轴和即将推出的功能详解
2020/07/27 Python
结合CSS3的布局新特征谈谈常见布局方法
2016/01/22 HTML / CSS
Doyoueven官网:澳大利亚健身服饰和配饰品牌
2019/03/24 全球购物
2014年应届大学生自我评价
2014/01/09 职场文书
诚实守信演讲稿
2014/09/01 职场文书
派出所正风肃纪剖析材料
2014/10/10 职场文书
群众路线组织生活会发言材料
2014/10/17 职场文书
写给妈妈的感谢信
2015/01/22 职场文书
python利用pandas分析学生期末成绩实例代码
2021/07/09 Python
MySQL普通表如何转换成分区表
2022/05/30 MySQL