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 字典(Dictionary)操作详解
Mar 11 Python
9种python web 程序的部署方式小结
Jun 30 Python
Python中基础的socket编程实战攻略
Jun 01 Python
python实现数据预处理之填充缺失值的示例
Dec 22 Python
一篇文章读懂Python赋值与拷贝
Apr 19 Python
python截取两个单词之间的内容方法
Dec 25 Python
对python for 文件指定行读写操作详解
Dec 29 Python
Python字符串的常见操作实例小结
Apr 08 Python
Python常用模块之requests模块用法分析
May 15 Python
Django框架中间件(Middleware)用法实例分析
May 24 Python
在python3中使用shuffle函数要注意的地方
Feb 28 Python
如何使用pdb进行Python调试
Jun 30 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
咖啡风味 世界咖啡主要分布分布 咖啡的生长要求
2021/03/06 新手入门
PHP生成HTML静态页面实例代码
2008/08/31 PHP
PHP跳转页面的几种实现方法详解
2013/06/08 PHP
PHP中array_merge和array相加的区别分析
2013/06/17 PHP
使用PHP强制下载PDF文件示例
2014/01/17 PHP
php 广告点击统计代码(php+mysql)
2018/02/21 PHP
PHP+redis实现的悲观锁机制示例
2018/06/12 PHP
PHP大文件分块上传功能实例详解
2019/07/22 PHP
JavaScript学习笔记(二) js对象
2011/10/25 Javascript
Firefox/Chrome/Safari的中可直接使用$/$$函数进行调试
2012/02/13 Javascript
jQuery中的$.ajax()方法应用
2014/05/06 Javascript
Javascript iframe交互并兼容各种浏览器的解决方法
2016/07/12 Javascript
Vue.js每天必学之表单控件绑定
2016/09/05 Javascript
使用node.js对音视频文件加密的实例代码
2017/08/30 Javascript
开发Vue树形组件的示例代码
2017/12/21 Javascript
vue+webpack实现异步加载三种用法示例详解
2018/04/24 Javascript
微信小程序实现传递多个参数与事件处理
2019/08/12 Javascript
vue登录以及权限验证相关的实现
2019/10/25 Javascript
vue路由的配置和页面切换详解
2020/09/09 Javascript
利用Pycharm断点调试Python程序的方法
2018/11/29 Python
梅尔频率倒谱系数(mfcc)及Python实现
2019/06/18 Python
Python 数据可视化pyecharts的使用详解
2019/06/26 Python
Python matplotlib生成图片背景透明的示例代码
2019/08/30 Python
python图的深度优先和广度优先算法实例分析
2019/10/26 Python
Python requests模块基础使用方法实例及高级应用(自动登陆,抓取网页源码)实例详解
2020/02/14 Python
基于Python获取docx/doc文件内容代码解析
2020/02/17 Python
windows下Pycharm安装opencv的多种方法
2020/03/05 Python
python requests.get带header
2020/05/05 Python
HR喜欢的自荐信格式
2013/10/08 职场文书
法律专业实习鉴定
2013/12/22 职场文书
小学三年级学生评语
2014/04/22 职场文书
校园环保建议书
2014/05/14 职场文书
售房协议书范本
2015/08/11 职场文书
SpringBoot+VUE实现数据表格的实战
2021/08/02 Java/Android
ipad隐藏软件app图标方法
2022/04/19 数码科技
解决Python保存文件名太长OSError: [Errno 36] File name too long
2022/05/11 Python