利用python爬取天气预报_分分钟学会用Python爬取天气预报

这篇博客介绍了如何使用Python的requests和BeautifulSoup库爬取中国天气网的天气预报信息。首先,确保安装了相关库,然后通过定义函数获取HTML内容。博主详细解释了代码逻辑,包括伪装成浏览器请求以避免反爬虫策略。接着,通过分析HTML结构,提取所需天气数据,并将其存储在字典中。最后展示了完整的爬虫代码。
摘要由CSDN通过智能技术生成

我假设你已经合适上述的标准,现在我们就来开始第一个爬虫的网站,我们首先挑选一个下手;附上URL:中国天气网(http://www.weather.com.cn/weather1d/101280101.shtml#dingzhi_first)

分分钟学会用Python爬取天气预报-1.jpg (32.43 KB, 下载次数: 0)

2018-7-30 15:04 上传

第一步:

请确保你已经安装了Requests和Beautifulsoup4的库,不然你可以打开CMD(命令提示符)然后输入

pip3 install requests

pip3 install Beautifulsoup4

pip3 install lxml

安装完毕后接着打开你的编辑器,这里对编辑器不做纠结,用的顺手就好。

首先我们做爬虫,拿到手第一个步调都是要先获取到网站确当前页的所有内容,即HTML标签。所以我们先要写一个获取到网页HTML标签的体例。

整个爬虫的的代码搭建我都采取的是将不合的功能做成不合的函数,在最后需要挪用的时候进行传参挪用就好了。

那么问题来了,为什么要这么做呢?

写代码作为萌新要思考几件事:

1、这个代码的复用性;

2、这个代码的语义化以及功能解耦;

3、是否美观简洁,让他人看你的代码能很清楚的理解你的逻辑;

代码展示:

分分钟学会用Python爬取天气预报-2.jpg (50.06 KB, 下载次数: 0)

2018-7-30 15:04 上传

上述代码几个处所我特别说明一下:

'''

抓取每天的天气数据

python 3.6.2

url:http://www.weather.com.cn/weather1d/101280101.shtml#dingzhi_first

'''

import requests

import bs4

养成好习惯代码一开始的注释表白这是一个什么功能的Python文件,使用的版本是什么,URL地址是什么,帮忙你下次打开的时候能快速理解这个文件的用途。

由于Requests和Beautifulsoup4是第三方的库,所以在下面要用import来进行引入

然后是

分分钟学会用Python爬取天气预报-3.jpg (39.14 KB, 下载次数: 0)

2018-7-30 15:04 上传

其中

def get_html(url):

构造一个名为get_html的函数,并传入你要请求的URL地址进去,会返回一个请求后的结果,

构造好后,挪用的时候直接

url = '包裹你的url'

get_html(url)

然后同样备注好你的这个函数的功能是做什么的,headers里面包裹了一些伪装成浏览器拜候的一些头部文件可以直接你复制过去使用。

这里要说一下为什么要做基础的伪装成浏览器,由于有了爬虫,自然就有反爬虫。有些网站为了歹意避免爬虫肆意爬取或者进行攻击等等情况,会做年夜量的反爬虫。伪装浏览器拜候是反爬虫的一小步。

好了我们继续,

htmlcontet = requests.get(url, headers=headers, timeout=30)

htmlcontet.raise_for_status()

htmlcontet.encoding = 'utf-8'

return htmlcontet.text

第一条如果我们看了Requests之后就知道这是一个解析你传入的url,并包含了请求头,响应延时

第二条,如果当前页面响应的情况会返回一个json数据包,我们通过这个语法来确认是否为我们要的成功响应的结果

第三条,解析格式,由于该网站我们可以看到已知字符编码格式为utf-8所以在这里我就写死了是utf-8

最后都没问题后,返回一个页面文件出来

第二步:

拿到一个页面文件后,我们就需要观察一下该网页的HTML结构

这里介绍一下如何观察一个网页的结构,打开F12或者,找个空白的位置右键——>检查

我们年夜概会看到这样的一个情况:

分分钟学会用Python爬取天气预报-4.jpg (38.17 KB, 下载次数: 0)

2018-7-30 15:04 上传

没错你看到那些

这些就是HTML语言,我们爬虫就是要从这些标识表记标帜里面抓取出我们所需要的内容。

我们现在要抓取这个1日夜间和2日白日的天气数据出来:

我们首先先从网页结构中找出他们的被包裹的逻辑

分分钟学会用Python爬取天气预报-5.jpg (34.07 KB, 下载次数: 0)

2018-7-30 15:04 上传

很清楚的能看到他们的HTML嵌套的逻辑是这样的:

分分钟学会用Python爬取天气预报-6.jpg (17.32 KB, 下载次数: 0)

2018-7-30 15:04 上传

我们要的内容都包裹在li里面,然后这里我们就要用BeautifulSoup里面的find体例来进行提取查询

我们继续构建一个抓取网页内容的函数,由于我们最终要的数据有两条,所有我先声明一个weather_list的数组来等会保存我要的结果。

代码如下:

分分钟学会用Python爬取天气预报-7.jpg (35.86 KB, 下载次数: 0)

2018-7-30 15:04 上传

同样的话不说第二遍,我们要写好注释。在声明完数组后,我们就可挪用适才封装好的请求函数来请求我们要的URL并返回一个页面文件,接下来就是用Beautifulsoup4里面的语法,用lxml来解析我们的网页文件。

你们可以用

soup = bs4.BeautifulSoup(html, 'lxml')

print (soup)

就可以看到整个HTML结构呈现在你眼前,接下来我就们就根据上面整理出来的标签结构来找到我们要的信息

content_ul = soup.find('div', class_='t').find_all('li')

具体体例,要熟读文档,我们找到所有的li后会返回一个这样的结构

分分钟学会用Python爬取天气预报-8.jpg (57.5 KB, 下载次数: 0)

2018-7-30 15:04 上传

这是一个数组的格式,然后我们遍历它,构造一个字典,我们对的操作字典建立'day','temperature'键值对

分分钟学会用Python爬取天气预报-9.jpg (24.84 KB, 下载次数: 0)

2018-7-30 15:04 上传

最后输出

分分钟学会用Python爬取天气预报-10.jpg (6.72 KB, 下载次数: 0)

2018-7-30 15:04 上传

附上完整代码:

分分钟学会用Python爬取天气预报-11.jpg (48.99 KB, 下载次数: 0)

2018-7-30 15:04 上传

分分钟学会用Python爬取天气预报-12.jpg (45.04 KB, 下载次数: 0)

2018-7-30 15:04 上传

来源:Victor 278 链接:

https://zhuanlan.zhihu.com/p/30632556

更多内容回复查看:

游客,如果您要查看本帖隐藏内容请回复

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值