分析的是美国一个网站统计的多年汽车使用燃料情况的数据,需要从网上下载,在此利用好python爬虫大有裨益,可作为实战运行分析。
此篇文章案例来源于:
本书文章中用R语言实现的数据可视化,是从网上直接下的文件然后分析,我打算在此用python实现爬取相关文件,并且运用python进行可视化分析。
分析
进入主页,得到了下载文件的主链接:
在此可见资源的下载地址:
接下来就是运用爬虫知识实现此文件的下载了。
爬虫代码
我们可有这样的思路:从主页出发 –> 爬取到下载文件页面的链接 –> 再从此爬取到下载地址链接 –> 之后运用相关的函数下载至本目录即可。以下是实现过程。
'''
函数目标:
用python爬取相关的下载文件
编写时间:
2018-03-21
'''
import requests
import re
from bs4 import BeautifulSoup
from urllib.request import urlretrieve
'''
first_url方法获取进入下载页面的地址
运用了正则表达式的匹配方法
'''
def first_url():
url = 'https://www.fueleconomy.gov/'
# 添加代理
header = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'zh-CN,zh',
'Cache-Control': 'max-age=0',
'Connection': 'keep-alive',
'Host': 'www.fueleconomy.gov',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.162 Safari/537.36}'
}
request = requests.get(url=url, headers=header)
# 指定编码格式
request.encoding = 'utf-8'
'''
发现不用指定re.S亦可以完成匹配,用了反而会报错...
注意每次匹配到的数据之后还有索引要记得标明
'''
link = re.findall(r'<a href="(.*?)">Developer Tools</a>', request.text)[0]
return link
'''
second_url方法是用来获取下载文件的地址
方法也是运用了正则表达式
'''
def second_url():
# 进入下载资源的页面
se_url = 'https://www.fueleconomy.gov' + first_url()
# 添加代理,基本上的代理信息没什么变化
header_2 = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'zh-CN,zh',
'Cache-Control': 'max-age=0',
'Connection': 'keep-alive',
'Host': 'www.fueleconomy.gov',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.162 Safari/537.36}'
}
request_2 = requests.get(url=se_url, headers=header_2)
request_2.encoding = 'utf-8'
# 匹配正则表达式
link_2 = re.findall(r'<a href="(.*?)">CSV</a>', request_2.text)[0]
return link_2
'''
已经得到了资源下载地址,在主函数中进行下载并且进行解压
'''
if __name__ == '__main__':
# 获取下载文件的资源地址
down_url = 'https://www.fueleconomy.gov' + second_url()
print('数据采集完成...')
print('开始下载文件...')
# 文件名称是:vehicles.csv.zip,格式也是非常的重要!
urlretrieve(url=down_url, filename='vehicles.csv.zip')
print('下载完成!可在本工程目录查收!')
至此可在本目录下查看到下载好的压缩文件:
当然也可加上运用python解压这一部分的模块,有兴趣的朋友可自行学习运用。
代码可视化分析阶段
在解压之后可先用excel打开来看看(会发现有39000+行数据),在此只需要知道其中的参数year
与com08
,前者为年份,后者为燃料的使用情况相关的数值。
可视化实现代码在下:
最后
这是一个平时做的小项目,适合新手入门。
另外,以上代码中不懂的模块知识,我建议你利用好搜索引擎,查看相关的文档或者是找本书看看。