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星号*与**用法分析
Feb 02 Python
python 实现对文件夹内的文件排序编号
Apr 12 Python
Php多进程实现代码
May 07 Python
解决Python 中英文混输格式对齐的问题
Jul 16 Python
python爬虫自动创建文件夹的功能
Aug 01 Python
Python爬虫实现获取动态gif格式搞笑图片的方法示例
Dec 24 Python
django框架使用orm实现批量更新数据的方法
Jun 21 Python
python创建属于自己的单词词库 便于背单词
Jul 30 Python
python安装和pycharm环境搭建设置方法
May 27 Python
解决Python 函数声明先后顺序出现的问题
Sep 02 Python
python如何对链表操作
Oct 10 Python
python基础学习之生成器与文件系统知识总结
May 25 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下几种删除目录的方法总结
2007/08/19 PHP
PHP基础之运算符的使用方法
2013/04/28 PHP
网页javascript精华代码集
2007/01/24 Javascript
浏览器脚本兼容 文本框中,回车键触发事件的兼容
2010/06/21 Javascript
与jquery serializeArray()一起使用的函数,主要来方便提交表单
2011/01/31 Javascript
解析jQuery与其它js(Prototype)库兼容共存
2013/07/04 Javascript
jquery实现多级下拉菜单的实例代码
2013/10/02 Javascript
jquery新的绑定事件机制on方法的使用方法
2014/04/15 Javascript
node.js中的fs.writeFile方法使用说明
2014/12/14 Javascript
JS实现的幻灯片切换显示效果
2016/09/07 Javascript
jQuery向webApi提交post json数据
2017/01/16 Javascript
flexslider.js实现移动端轮播
2017/02/05 Javascript
React.js中常用的ES6写法总结(推荐)
2017/05/09 Javascript
vue实现组件之间传值功能示例
2018/07/13 Javascript
Angular6 正则表达式允许输入部分中文字符
2018/09/10 Javascript
node.js 微信开发之定时获取access_token
2020/02/07 Javascript
vue中实现点击变成全屏的多种方法
2020/09/27 Javascript
Array.filter中如何正确使用Async
2020/11/04 Javascript
如何在JavaScript中正确处理变量
2020/12/25 Javascript
python算法学习之基数排序实例
2013/12/18 Python
Python2中文处理纪要的实现方法
2018/03/10 Python
python 实现返回一个列表中出现次数最多的元素方法
2019/06/11 Python
Python基础之函数原理与应用实例详解
2020/01/03 Python
Tensorflow 多线程设置方式
2020/02/06 Python
python学生管理系统的实现
2020/04/05 Python
PyQt5 文本输入框自动补全QLineEdit的实现示例
2020/05/13 Python
pycharm 使用anaconda为默认环境的操作
2021/02/05 Python
使用css实现android系统的loading加载动画
2019/07/25 HTML / CSS
shell的种类有哪些
2015/04/15 面试题
培训主管的职业生涯规划
2014/03/06 职场文书
运动会广播稿诗歌版
2014/09/12 职场文书
购房委托书范本
2014/09/18 职场文书
800字作文之大雪
2019/12/04 职场文书
python数据分析之用sklearn预测糖尿病
2021/04/22 Python
图解上海144收音机
2021/04/22 无线电
Redis+AOP+自定义注解实现限流
2022/06/28 Redis