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基于pygame实现的font游戏字体(附源码)
Nov 11 Python
举例讲解Python面相对象编程中对象的属性与类的方法
Jan 19 Python
win7上python2.7连接mysql数据库的方法
Jan 14 Python
使用tensorflow实现AlexNet
Nov 20 Python
Python读取英文文件并记录每个单词出现次数后降序输出示例
Jun 28 Python
Python实现监控键盘鼠标操作示例【基于pyHook与pythoncom模块】
Sep 04 Python
python基于C/S模式实现聊天室功能
Jan 09 Python
Python3实现的判断回文链表算法示例
Mar 08 Python
浅谈python新式类和旧式类区别
Apr 26 Python
Python使用__new__()方法为对象分配内存及返回对象的引用示例
Sep 20 Python
Django REST framework 单元测试实例解析
Nov 07 Python
django rest framework serializer返回时间自动格式化方法
Mar 31 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
PHP5 字符串处理函数大全
2010/03/23 PHP
Zend Studio 实用快捷键一览表(精心整理)
2013/08/10 PHP
php中stdClass的用法分析
2015/02/27 PHP
asp 取文本框名称代码
2008/12/02 Javascript
javascript下判断一个元素是否存在的代码
2010/03/05 Javascript
精心挑选的15个jQuery下拉菜单制作教程
2012/06/15 Javascript
jquery 实现checkbox全选,反选,全不选等功能代码(奇数)
2012/10/24 Javascript
append和appendTo的区别以及appendChild用法
2013/12/24 Javascript
JS组件Bootstrap Table表格多行拖拽效果实现代码
2015/12/08 Javascript
Jquery中map函数的用法
2016/06/03 Javascript
JavaScript判断是否是微信浏览器
2016/06/13 Javascript
使用jQuery的toggle()方法对HTML标签进行显示、隐藏的方法(示例)
2016/09/01 Javascript
JS防止网页被嵌入iframe框架的方法分析
2016/09/13 Javascript
通过学习bootstrop导航条学会修改bootstrop颜色基调
2017/06/11 Javascript
详解基于Node.js的HTTP/2 Server实践
2018/05/31 Javascript
jQuery实现下拉菜单动态添加数据点击滑出收起其他功能
2018/06/14 jQuery
Vue 路由 过渡动效 数据获取方法
2018/07/31 Javascript
使用weixin-java-miniapp配置进行单个小程序的配置详解
2019/03/29 Javascript
使用easyui从servlet传递json数据到前端页面的两种方法
2019/09/05 Javascript
vue实现动态给id赋值,点击事件获取当前点击的元素的id操作
2020/11/09 Javascript
python使用cPickle模块序列化实例
2014/09/25 Python
详解Python map函数及Python map()函数的用法
2017/11/16 Python
python矩阵的转置和逆转实例
2018/12/12 Python
python reverse反转部分数组的实例
2018/12/13 Python
python实现网页自动签到功能
2019/01/21 Python
python3+selenium获取页面加载的所有静态资源文件链接操作
2020/05/04 Python
jupyter notebook 写代码自动补全的实现
2020/11/02 Python
澳大利亚领先的优质葡萄酒拍卖会:Langton’s Fine Wines
2019/03/24 全球购物
求职信范文英文版
2014/01/05 职场文书
篮球兴趣小组活动总结
2014/07/07 职场文书
我的中国梦演讲稿600字
2014/08/19 职场文书
2015年元旦晚会活动总结(学生会)
2014/11/28 职场文书
银行客户经理培训心得体会
2016/01/09 职场文书
JS一分钟在github+Jekyll的博客中添加访问量功能的实现
2021/04/03 Javascript
Django使用channels + websocket打造在线聊天室
2021/05/20 Python
MySql数据库 查询时间序列间隔
2022/05/11 MySQL