文章一开始就说明了这是本系列的首篇,并且还细心地推荐了作者先前写的两个系列,这样读者就能很快建立起自己的知识框架了。
选择数据源
挑选恰当的数据来源是数据抓取的首要环节。这里所说的数据来源链接是带有“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]-如何选择数据源并导入包进行数据分析:系列文章第一篇-东山笔记](https://83ch.com/wp-content/themes/zibll/img/thumbnail-lg.svg)
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')