ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

爬下artstation关注的画师信息制作为json文件

2021-05-11 20:03:34  阅读:291  来源: 互联网

标签:name items artstation json 画师 data append


原始网站 https://www.artstation.com/
Author:xiaozhu_sai
本文章仅供学习交流,请勿交流梯子以及版权问题

1、爬取数据目的&后续处理

  • 方便后续对各个画师作品的个人下载
  • 个人练习‘用户关注’的推荐算法与其大数据

处理后数据:在这里插入图片描述

2、使用who-you-konw提供的端口位置以及加载时候的访问API即可获取所有画师的json信息https://www.artstation.com/users/个人ID/following.json?page=1

一个page有20个画师,在遍历的时候注意这一点就行了
在这里插入图片描述
在这里插入图片描述

3、json文件的写入与读取

没啥可说的,代码如下
注意如果是使用的vscode读取json信息,不要看调试控制台终端的数据,因为会显示不全,一定要保存到Json确定。(使用res.text/ content或者res.json()数据相同)

# 写入
        os.makedirs('JSON', exist_ok=True)
        with  open(os.path.join('JSON/ArtstationPage-'+str(i)+'.json'), 'w+') as items:
            json.dump(s, items, sort_keys=True,  indent=4)
## 读取
        with open(os.path.join('JSON/artstation-page-'+str(i)+'.json'), 'r') as items:
            data_json = json.load(items)['data']

4、画师信息

artstation的每个画师信息相当的完善(部分如图),我只需要id 域名 画师名 国家 简介等这几个基本信息即可
注意username和subdomin域名是一样的
在这里插入图片描述

5、画师信息保存(写入)

步骤

  • 遍历所有的page,将各类数据分别按顺序存储在List中
  • 画师信息为Dict对象,简介 技能等多个数据采用List存储(见首图)
  • 简介使用re.split()分割,保留邮箱,后续会优化“中文”
  • 因为个人关注画师会不断增加,以及保存了followers,会保存一个脚本运行时间"time": time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()),
  • 在这里插入图片描述

domain = []
full_name = []
id = []
followers_count = []
location = []
skills = []
software = []
headline = []

try: 
    for i in range(1,43):
        with open(os.path.join('JSON/followingPage/ArtstationPage-'+str(i)+'.json'), 'r') as items:
            #data_json是一个list有20个dict,'id, subdomain/suername, followers_count, full_name
            data_json = json.load(items)['data']
            
            for j in range(len(data_json)):
                domain.append((data_json[j]['subdomain']))
                full_name.append(data_json[j]['full_name'])
                id.append(data_json[j]['id'])
                followers_count.append(data_json[j]['followers_count'])
                location.append(data_json[j]['location'])
                skills.append([i['name'] for i in data_json[j]['skills']])
                software.append([i['name'] for i in data_json[j]['software_items']])
                headline.append(re.split('[^(\w | @ | \. | \|)]+', data_json[j]['headline']))
           
    artists_json = {
        "time": time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()),
        "data":[
            {}
        ]
    }
    for i in range(len(id)):
        temp_json = {
            "id":id[i],
            "full_name":full_name[i],
            "subdomain_and_username":domain[i],
            "headline":headline[i],
            "url":"https://www.artstation.com/" + domain[i],
            "location":location[i],
            "skills":skills[i],
            "software":software[i],
            "followers_count":followers_count[i],
        }
        artists_json['data'].append(temp_json)

    # 写入
    os.makedirs('JSON', exist_ok=True)
    with  open(os.path.join('JSON/ArtstationArtists.json'), 'w+') as items:
        json.dump(artists_json, items, indent=4)
    print('正常写入')

except Exception as e:
    print(e)

6、后续处理以及优化

  • 进行数据可视化,并且训练推荐算法
  • 将画师作品更新至本地/ Eagle,已确定每张作品存在唯一‘ID’
  • 未来优化:增加多线程携程爬取(因工作量不大,目前为单线程),python版本制作为库,使用接口即可。更新Js油猴插件版本。

标签:name,items,artstation,json,画师,data,append
来源: https://blog.csdn.net/weixin_42375356/article/details/116666243

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有