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标准库urllib2的一些使用细节总结
Mar 16 Python
Python的MongoDB模块PyMongo操作方法集锦
Jan 05 Python
浅谈python中scipy.misc.logsumexp函数的运用场景
Jun 23 Python
学习Python3 Dlib19.7进行人脸面部识别
Jan 24 Python
Python3实现的字典遍历操作详解
Apr 18 Python
python获取代理IP的实例分享
May 07 Python
python实现PID算法及测试的例子
Aug 08 Python
Python 面向对象之类class和对象基本用法示例
Feb 02 Python
Python实现对adb命令封装
Mar 06 Python
在ipython notebook中使用argparse方式
Apr 20 Python
pycharm第三方库安装失败的问题及解决经验分享
May 09 Python
Python APScheduler执行使用方法详解
Dec 10 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
自编函数解决pathinfo()函数处理中文问题
2014/11/03 PHP
thinkPHP多域名情况下使用memcache方式共享session数据的实现方法
2016/07/21 PHP
php使用PDO事务配合表格读取大量数据插入操作实现方法
2017/02/16 PHP
jQuery在html有效在jsp无效的原因及解决方法
2013/08/02 Javascript
用原生JS获取CLASS对象(很简单实用)
2014/10/15 Javascript
再谈javascript原型继承
2014/11/10 Javascript
基于jquery实现的仿优酷图片轮播特效代码
2016/01/13 Javascript
AngularJS中的API(接口)简单实现
2016/07/28 Javascript
JS禁止查看网页源代码的实现方法
2016/10/12 Javascript
Js自定义多选框效果的实例代码
2017/07/05 Javascript
Vee-Validate的使用方法详解
2017/09/22 Javascript
vue中的event bus非父子组件通信解析
2017/10/27 Javascript
vue使用axios时关于this的指向问题详解
2017/12/22 Javascript
vue mint-ui tabbar变组件使用
2018/05/04 Javascript
Vue组件创建和传值的方法
2018/08/17 Javascript
vue-cli3+typescript新建一个项目的思路分析
2019/08/06 Javascript
uni-app实现点赞评论功能
2019/11/25 Javascript
Vue如何基于es6导入外部js文件
2020/05/15 Javascript
[02:51]2014DOTA2 TI小组赛总结中国军团全部进军钥匙球馆
2014/07/15 DOTA
[55:47]DOTA2上海特级锦标赛C组小组赛#2 LGD VS Newbee第三局
2016/02/27 DOTA
python查找指定具有相同内容文件的方法
2015/06/28 Python
Pycharm学习教程(2) 代码风格
2017/05/02 Python
如何在django里上传csv文件并进行入库处理的方法
2019/01/02 Python
python3+django2开发一个简单的人员管理系统过程详解
2019/07/23 Python
Python3 集合set入门基础
2020/02/10 Python
Pytest框架之fixture的详细使用教程
2020/04/07 Python
Pandas之read_csv()读取文件跳过报错行的解决
2020/04/21 Python
python 实用工具状态机transitions
2020/11/21 Python
波兰购物网站:MALL.PL
2019/05/01 全球购物
高等教育专业自荐信范文
2014/03/26 职场文书
住宅使用说明书
2014/05/09 职场文书
2014年纪检部工作总结
2014/11/12 职场文书
2014年工人工作总结
2014/11/25 职场文书
《哪吒之魔童降世》观后感:世上哪有随随便便的成功
2019/11/08 职场文书
利用Java设置Word文本框中的文字旋转方向的实现方法
2021/06/28 Java/Android
SpringBoot集成Redis的思路详解
2021/10/16 Redis