首页 > 其他分享 >16行代码采集原神官网角色全图&全语音

16行代码采集原神官网角色全图&全语音

时间:2023-02-23 14:01:31浏览次数:40  
标签:神官 全图 16 intro char html charList result data

嗨害大家好鸭!我是小熊猫~

本来是不玩原神的,

但是实在是经不住诱惑鸭~

毕竟谁能拒绝可以爬树、炸鱼、壶里造房子、抓小动物、躲猫猫的对战游戏捏~

16行代码采集原神官网角色全图&全语音_正则表达式

准备工具

16行代码采集原神官网角色全图&全语音_html_02

源码资料电子书:​​点击此处跳转文末名片获取​​

准备模块

import requests
import re
import execjs

请求链接

16行代码采集原神官网角色全图&全语音_数据_03

16行代码采集原神官网角色全图&全语音_数据_04

本次目标

所有角色的:

  • 基础介绍
  • 中日语音
  • 图片

分析数据来源

1. 右键点击检查(开发者工具)

16行代码采集原神官网角色全图&全语音_数据_05

2.刷新网页,找准对应数据

16行代码采集原神官网角色全图&全语音_pycharm_06

16行代码采集原神官网角色全图&全语音_正则表达式_07

开始代码

url = 'https:///main/character/liyue?char=1'
html_data = requests.get(url).text
print(html_data)
源码资料电子书:​​点击此处跳转文末名片获取​​

筛选数据

16行代码采集原神官网角色全图&全语音_数据_08

随便搜索网站内包含内容:“南十字”

16行代码采集原神官网角色全图&全语音_html_09

使用正则表达式匹配数据内容

16行代码采集原神官网角色全图&全语音_pycharm_10

js_text = re.findall('window.__NUXT__=(.*);', html_data)[0]

执行结果

html_data = requests.get(url).text
js_text = re.findall('window.__NUXT__=(.*);', html_data)[0]
result = execjs.eval(js_text)

此时会出现编码问题

16行代码采集原神官网角色全图&全语音_pycharm_11

加指定编码

import subprocess
from functools import partial
subprocess.Popen = partial(subprocess.Popen, encoding="utf-8")

再次运行,无报错

16行代码采集原神官网角色全图&全语音_数据_12

使用pprint查看数据结构

pprint.pprint(result)

16行代码采集原神官网角色全图&全语音_数据_13

返回网页查看我们需要的内容

16行代码采集原神官网角色全图&全语音_数据_14

16行代码采集原神官网角色全图&全语音_pycharm_15

打印所需数据

charList = result['data'][0]['charList']
for char in charList:
cover1 = char['cover1']
title = char['title']
intro = char['intro']
audio_list = char['cv'][0]['audio']
print(title, intro, cover1, audio_list)

部分效果展示

16行代码采集原神官网角色全图&全语音_html_16

16行代码采集原神官网角色全图&全语音_html_17

全部代码

import requests
import re
import execjs

url = 'https://python学习交流:660193417/main/character/liyue?char=1'
html_data = requests.get(url).text
js_text = re.findall('window.__NUXT__=(.*);', html_data)[0]
result = execjs.eval(js_text)
# pprint.pprint(result)
charList = result['data'][0]['charList']
for char in charList:
cover1 = char['cover1']
title = char['title']
intro = char['intro']
audio_list = char['cv'][0]['audio']
print(title, intro, cover1, audio_list)

标签:神官,全图,16,intro,char,html,charList,result,data
From: https://blog.51cto.com/u_15959262/6081159

相关文章