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 相关文章推荐
python3.0 字典key排序
Dec 24 Python
多线程爬虫批量下载pcgame图片url 保存为xml的实现代码
Jan 17 Python
Python实现的数据结构与算法之双端队列详解
Apr 22 Python
python numpy元素的区间查找方法
Nov 14 Python
解决在Python编辑器pycharm中程序run正常debug错误的问题
Jan 17 Python
python读取.mat文件的数据及实例代码
Jul 12 Python
python实现切割url得到域名、协议、主机名等各个字段的例子
Jul 25 Python
Python GUI自动化实现绕过验证码登录
Jan 10 Python
tensorflow 利用expand_dims和squeeze扩展和压缩tensor维度方式
Feb 07 Python
tensorflow之自定义神经网络层实例
Feb 07 Python
python 第三方库paramiko的常用方式
Feb 20 Python
Python帮你解决手机qq微信内存占用太多问题
Feb 15 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过滤html字符串,防止SQL注入的方法
2013/07/02 PHP
PHP不用递归遍历目录下所有文件的代码
2014/07/04 PHP
php实现字符串反转输出的方法
2015/03/14 PHP
PHP 实现浏览记录并按日期分组
2017/05/11 PHP
php使用curl获取header检测开启GZip压缩的方法
2018/08/15 PHP
Thinkphp 框架扩展之应用模式实现方法分析
2020/04/27 PHP
JavaScript去除空格的几种方法
2006/10/03 Javascript
jquery判断元素是否隐藏的多种方法
2014/05/06 Javascript
JavaScript导出Excel实例详解
2014/11/25 Javascript
7个jQuery最佳实践
2016/01/12 Javascript
jQuery日历插件datepicker用法详解
2016/03/03 Javascript
js鼠标经过tab选项卡时实现切换延迟
2017/03/24 Javascript
JS实现标签页切换效果
2017/05/04 Javascript
JS数组操作之增删改查的简单实现
2017/08/21 Javascript
vue 之 .sync 修饰符示例详解
2018/04/21 Javascript
Easyui 去除jquery-easui tab页div自带滚动条的方法
2019/05/10 jQuery
electron+vue实现div contenteditable截图功能
2020/01/07 Javascript
python 中split 和 strip的实例详解
2017/07/12 Python
python MNIST手写识别数据调用API的方法
2018/08/08 Python
Python中logging实例讲解
2019/01/17 Python
Python判断对象是否相等及eq函数的讲解
2019/02/25 Python
Python3enumrate和range对比及示例详解
2019/07/13 Python
python 数据提取及拆分的实现代码
2019/08/26 Python
Python urllib.request对象案例解析
2020/05/11 Python
CSS+jQuery+PHP+MySQL实现的在线答题功能
2015/04/25 HTML / CSS
Application Cache未缓存文件无法访问无法加载问题
2014/05/31 HTML / CSS
html5桌面通知(Web Notifications)实例解析
2014/07/07 HTML / CSS
教育专业个人求职信
2013/12/02 职场文书
设计顾问服务计划书
2014/05/04 职场文书
2014年宣传部工作总结
2014/11/12 职场文书
2014年高二班主任工作总结
2014/12/16 职场文书
2016年暑假家长对孩子评语
2015/12/01 职场文书
司法廉洁教育心得体会
2016/01/20 职场文书
浅谈pytorch中stack和cat的及to_tensor的坑
2021/05/20 Python
css3中transform属性实现的4种功能
2021/08/07 HTML / CSS
解决IIS7下无法绑定https主机的问题
2022/04/29 Servers