4月10日晚间,一场影响北方大部地区的沙尘暴引发大家的关注,北京发布大风、沙尘暴双预警,不少网友表示出门像打开“护眼模式”并且值得关注的是目前的这次沙尘天气过程是今年以来第8次,常年同期的沙尘过程次数是5至6次,今年沙尘出现的次数略偏多。
不知道历史上每年出现沙尘天气的次数相比今年是怎么样的,这里我们通过python爬取爬取历史天气数据来进行分析。
首先简单的进行爬取步骤分析,
1.python库的选择,这里我使用的是Python中的BeautifulSoup库进行爬取,BeautifulSoup库是一个能够从HTML文件中提取数据的Python库,由于我们获取的HTML文件包含整个网页内容,我们还需要定位到我们所需要获取的数据部分。
2.分析网页结构,需要先打开我们要爬取的网页,使用谷歌浏览器等开发者工具快速定位到我们所需要的HTML内容:
3.存储数据,数据获取到后需要将数据以结构化的方式存储起来。
接下来就是爬取数据的实际操作,因为天气网大量访问是会触发一些反爬机制的,所以爬取过程中在代码里面添加了代理IP,选择的是由亿牛云提供的隧道爬虫代理,因为不管是代理延迟,访问速度,稳定性都是最优的。实现代码如下:
``#! -- encoding:utf-8 --
import requests
import random
# 要访问的目标页面
targetUrl = "https://www.tianqi.com//"
# 要访问的目标HTTPS页面
# targetUrl = "https://www.tianqi.com//"
proxyHost = "t.16yun.cn"
proxyPort = "31111"
# 代理验证信息
proxyUser = "udfejfhk"
proxyPass = "568547"
proxyMeta = "http://%(user)s:%(pass)s@%(host)s:%(port)s" % {
"host" : proxyHost,
"port" : proxyPort,
"user" : proxyUser,
"pass" : proxyPass,
}
# 设置 http和https访问都是用HTTP代理
proxies = {
"http" : proxyMeta,
"https" : proxyMeta,
}
# 设置IP切换头
tunnel = random.randint(1,10000)
headers = {"Proxy-Tunnel": str(tunnel)}
resp = requests.get(targetUrl, proxies=proxies, headers=headers)
print resp.status_code
print resp.text