如何选择数据源并导入包进行数据分析:系列文章第一篇

文章一开始就说明了这是本系列的首篇,并且还细心地推荐了作者先前写的两个系列,这样读者就能很快建立起自己的知识框架了。

选择数据源

挑选恰当的数据来源是数据抓取的首要环节。这里所说的数据来源链接是带有“nw=1&anw=1”的。别小看了这几个字符,它们可是数据的根本。一个可信的数据来源就好比一座宝藏,能为我们后续的分析提供丰富的资料。不同的数据来源可能包含不同种类、不同价值的信息。

通常,优质的数据来源对于数据抓取的成功至关重要。这样的数据不仅关乎数据本身的品质,还关系到抓取的难易程度和所需成本。一旦我们确定了网址,便迈出了数据抓取的第一步,之后便可以着手进行数据的深度分析了。

准备工作

在准备阶段,我们需要完成两项关键任务:首先,导入必要的包;其次,配置代理头。导入包可以让我们利用现成的工具集,提升开发速度。配置代理头则相当于为数据请求增添了一层保护,使其不易被目标网站轻易识别,降低被封禁的可能性。

在互联网这个纷繁复杂的领域,为了确保自身数据和系统的安全,目标网站会采取多种反爬措施。采用代理头技术,便是我们对抗这些反爬策略的一种手段。完成这些准备工作,就好比为数据抓取之旅搭建了一座稳固的桥梁,使我们能够更加顺畅地发起网络请求。

import requests
import pandas as pd
import time 
pd.set_option('max_rows',500)
headers = {  'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:73.0) Gecko/20100101 Firefox/73.0'}
url = 'https://c.m.163.com/ug/api/wuhan/app/data/list-total'   # 定义要访问的地址 
r = requests.get(url, headers=headers)  # 使用requests发起请求

请求数据

准备好了,便可提交申请。提交后,我们获得了一段长达数十万字符的序列。这段序列杂乱无章,想要从中提取所需信息颇为不易。试想,若直接对这串字符进行解析,工作量将是多么庞大。

字符串格式不适合分析,另外在网页预览时发现数据实际上是类似于字典的json格式。json格式的好处是结构明确,便于解析。因此,我们需要将字符串转换为json格式。这一转换过程非常重要,就好比将一堆乱糟糟的文件整理成井井有条的文件夹,便于我们后续查找和使用数据。

处理数据

import json
data_json = json.loads(r.text)
data_json.keys()

转换成JSON格式后,我们注意到所需信息位于”data”部分。这好比在宽敞的屋子里找到了一个藏有宝藏的小柜子。然后,我们需要从JSON中提取这些数据。

提取出的信息包括四个不同的标签,每个标签所保存的信息都有所不同。这四个标签就好比是四个分开的抽屉,各自存放着不同类型的物品。对这四个标签及其内容的深入理解,能帮助我们迅速找到所需的数据,为接下来的分析和处理带来便利,就如同手里握有一张宝藏的地图。

获取实时数据

data = data_json['data']
data.keys()

获取实时数据对整个过程至关重要。这样的数据宛如刚出锅的佳肴,能够展现最即时的状态与变动。实时数据在迅速作出决策、掌握市场脉搏等方面扮演着关键角色。

要成功获取即时的数据,需频繁调整查询的速率与手段。实时数据不断变动,若查询不够及时或精确,便可能遗漏重要信息。唯有经过细致的操作与调试,才能确保持续稳定地获取精确的实时数据。

代码分析

程序代码中存在一些问题,比如有些地方显得杂乱无章,缺乏清晰的层次。这样的混乱和层次不清,会给后续的维护和扩展带来不少困扰。就好比一栋乱糟糟的房子,主人找东西时往往会遇到不少麻烦。

编写代码时,我们应重视其结构和规范性。文章还提到,可能存在更高效的抓取方法。在技术飞速进步的当下,我们应当积极寻求新的方法和技巧,以提升数据抓取的效率与品质。或许,探寻更高效的抓取方式,将成为我们下一阶段的优化目标。

在使用数据抓取的过程中,各位是否遇到过由于代码编写不规范而产生的问题?若觉得这篇文章对您有所帮助,请不要忘记点赞并转发!

# =============================================
# --*-- coding: utf-8 --*--
# @Time    : 2020-03-27
# @Author  : 不温卜火
# @CSDN    : https://blog.csdn.net/qq_16146103
# @FileName: Real-time epidemic.py
# @Software: PyCharm
# =============================================

图片[1]-如何选择数据源并导入包进行数据分析:系列文章第一篇-东山笔记

import requests import pandas as pd import json import time pd.set_option('max_rows',500) headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:73.0) Gecko/20100101 Firefox/73.0'} url = 'https://c.m.163.com/ug/api/wuhan/app/data/list-total' # 定义要访问的地址 r = requests.get(url, headers=headers) # 使用requests发起请求 data_json = json.loads(r.text) data = data_json['data'] data_province = data['areaTree'][2]['children'] areaTree = data['areaTree'] class spider_yiqing(object): # 将提取数据的方法封装成函数 def get_data(data, info_list): info = pd.DataFrame(data)[info_list] # 主要信息 today_data = pd.DataFrame([i['today'] for i in data]) # 提取today的数据 today_data.columns = ['today_' + i for i in today_data.columns] total_data = pd.DataFrame([i['total'] for i in data]) total_data.columns = ['total_' + i for i in total_data.columns] return pd.concat([info, total_data, today_data], axis=1) def save_data(data,name): file_name = name+'_'+time.strftime('%Y_%m_%d',time.localtime(time.time()))+'.csv' data.to_csv(file_name,index=None,encoding='utf_8_sig') print(file_name+'保存成功!') if __name__ == '__main__': today_province = get_data(data_province, ['id', 'lastUpdateTime', 'name']) today_world = get_data(areaTree, ['id', 'lastUpdateTime', 'name']) save_data(today_province, 'today_province') save_data(today_world, 'today_world')

© 版权声明
THE END
喜欢就支持一下吧
分享