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 26 Python
django 开发忘记密码通过邮箱找回功能示例
Apr 17 Python
对python中的logger模块全面讲解
Apr 28 Python
python3 selenium 切换窗口的几种方法小结
May 21 Python
Python将一个CSV文件里的数据追加到另一个CSV文件的方法
Jul 04 Python
Django中的文件的上传的几种方式
Jul 23 Python
python datetime中strptime用法详解
Aug 29 Python
解析Python3中的Import
Oct 13 Python
python+Django实现防止SQL注入的办法
Oct 31 Python
Jupyter notebook 启动闪退问题的解决
Apr 13 Python
Python基于QQ邮箱实现SSL发送
Apr 26 Python
使用keras实现非线性回归(两种加激活函数的方式)
Jul 05 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上传图片获取路径及给表单字段赋值的方法
2016/01/23 PHP
搭建自己的PHP MVC框架详解
2017/08/16 PHP
thinkphp框架使用JWTtoken的方法详解
2019/10/10 PHP
srcElement表格样式
2006/09/03 Javascript
CSS+Table图文混排中实现文本自适应图片宽度(超简单+跨所有浏览器)
2009/02/14 Javascript
Jquery判断IE6等浏览器的代码
2011/04/05 Javascript
一个级联菜单代码学习及removeClass与addClass的应用
2013/01/24 Javascript
JavaScript中创建类/对象的几种方法总结
2013/11/29 Javascript
判断客户浏览器是否支持cookie的示例代码
2013/12/23 Javascript
jQuery中:only-child选择器用法实例
2015/01/03 Javascript
JS全局变量和局部变量最新解析
2016/06/24 Javascript
JS实现css hover操作的方法示例
2017/04/07 Javascript
解决AjaxFileupload 上传时会出现连接重置的问题
2017/07/07 Javascript
Vue中父组件向子组件通信的方法
2017/07/11 Javascript
angular.js实现购物车功能
2017/10/23 Javascript
vue slot与传参实例代码讲解
2019/04/28 Javascript
微信小程序实现页面浮动导航
2020/01/08 Javascript
javascript设计模式之迭代器模式
2020/01/30 Javascript
Vue Router 实现动态路由和常见问题及解决方法
2020/03/06 Javascript
vue 解决data中定义图片相对路径页面不显示的问题
2020/08/13 Javascript
[01:18:45]DOTA2-DPC中国联赛 正赛 DLG vs Dragon BO3 第三场2月1日
2021/03/11 DOTA
Python MD5文件生成码
2009/01/12 Python
如何使用Python的Requests包实现模拟登陆
2018/04/27 Python
python中数组和矩阵乘法及使用总结(推荐)
2019/05/18 Python
在pycharm中实现删除bookmark
2020/02/14 Python
Selenium python时间控件输入问题解决方案
2020/07/22 Python
python opencv角点检测连线功能的实现代码
2020/11/24 Python
Chain Reaction Cycles芬兰:世界上最大的在线自行车商店
2017/12/06 全球购物
员工自我鉴定
2013/10/09 职场文书
大学生创业策划书
2014/02/02 职场文书
幼儿园课题方案
2014/06/09 职场文书
2015年语文教研组工作总结
2015/05/23 职场文书
如何用threejs实现实时多边形折射
2021/05/07 Javascript
SQL写法--行行比较
2021/08/23 SQL Server
Golang原生rpc(rpc服务端源码解读)
2022/04/07 Golang
教你如何用cmd快速登录服务器
2022/06/10 Servers