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版的文曲星猜数字游戏代码
Sep 02 Python
python pickle 和 shelve模块的用法
Sep 16 Python
Python实现信用卡系统(支持购物、转账、存取钱)
Jun 24 Python
JPype实现在python中调用JAVA的实例
Jul 19 Python
python reduce 函数使用详解
Dec 05 Python
pycharm中成功运行图片的配置教程
Oct 28 Python
python super的使用方法及实例详解
Sep 25 Python
Python3如何对urllib和urllib2进行重构
Nov 25 Python
Django项目使用ckeditor详解(不使用admin)
Dec 17 Python
Python3和PyCharm安装与环境配置【图文教程】
Feb 14 Python
详解Python3中的 input() 函数
Mar 18 Python
Python生成器实现简单&quot;生产者消费者&quot;模型代码实例
Mar 27 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
收集的DedeCMS一些使用经验
2007/03/17 PHP
CI框架学习笔记(一) - 环境安装、基本术语和框架流程
2014/10/26 PHP
Yii框架连表查询操作示例
2019/09/06 PHP
jquery不会自动回收xmlHttpRequest对象 导致了内存溢出
2012/06/18 Javascript
原生js实现给指定元素的后面追加内容
2013/04/10 Javascript
javascript中attribute和property的区别详解
2014/06/05 Javascript
node.js中的fs.chmodSync方法使用说明
2014/12/18 Javascript
全面理解JavaScript中的闭包
2016/05/12 Javascript
使用JS 插件qrcode.js生成二维码功能
2017/02/20 Javascript
bootstrap fileinput 插件使用项目总结(经验)
2017/02/22 Javascript
JavaScript学习笔记之惰性函数示例详解
2017/08/27 Javascript
jQueryUI Sortable 应用Demo(分享)
2017/09/07 jQuery
JavaScript学习总结(一) ECMAScript、BOM、DOM(核心、浏览器对象模型与文档对象模型)
2018/01/07 Javascript
微信小程序实现保存图片到相册功能
2018/11/30 Javascript
VuePress 静态网站生成方法步骤
2019/02/14 Javascript
微信小程序实现单列下拉菜单效果
2019/04/25 Javascript
[01:04]DOTA2:伟大的Roshan雕塑震撼来临
2015/01/30 DOTA
Python中的两个内置模块介绍
2015/04/05 Python
解决Python中字符串和数字拼接报错的方法
2016/10/23 Python
Django项目实战之用户头像上传与访问的示例
2018/04/21 Python
解决python3 HTMLTestRunner测试报告中文乱码的问题
2018/12/17 Python
Python实现的ftp服务器功能详解【附源码下载】
2019/06/26 Python
python中时间、日期、时间戳的转换的实现方法
2019/07/06 Python
Python控制台实现交互式环境执行
2020/06/09 Python
使用CSS Grid布局实现网格的流动
2014/12/30 HTML / CSS
阿玛尼美妆英国官网:Giorgio Armani Beauty英国
2019/03/28 全球购物
来自南加州灵感的工作和娱乐服装:TravisMathew
2019/05/01 全球购物
英国国家美术馆商店:National Gallery
2019/05/01 全球购物
采购主管工作职责
2013/12/12 职场文书
门前三包责任书
2014/04/15 职场文书
销售提升方案
2014/06/07 职场文书
2015年世界无车日活动总结
2015/03/23 职场文书
2015年度物流工作总结
2015/04/30 职场文书
2016猴年春节问候语
2015/11/11 职场文书
redis 解决库存并发问题实现数量控制
2022/04/08 Redis
CSS中calc(100%-100px)不加空格不生效
2023/05/07 HTML / CSS