本次送书之前先给大家介绍我的好友周萝卜,他是一个非常有趣的人,经常使用python做一些骚操作!今天这篇文章就是他给大家带来的分享。下面是他的公众号,大家感兴趣的可以关注一下他哦!

正文开启

当我们进入王者荣耀游戏客户端,是可以在英雄关系页面看到不同英雄之间的关联信息的,比如花木兰和兰陵王之间的宿命,安其拉和亚瑟的单恋以及露娜与铠那命运弄人的兄妹之情等等

要厘清这些英雄之间的关系,还是比较困难的,尤其是还有很多中心英雄,与其有关系的英雄多大数十个。今天我们就通过 neo4j 数据库来处理这些错综复杂的关系,看看一直伴随我们每个王者峡谷的英雄都有着怎样的“朋友圈”呢

数据获取

找了很久,还是在网上找到了一个比较全面的英雄关系数据

https://www.haosix.com/gonglue/411

网页很简单,直接上 requests 爬取即可

import requests
from bs4 import BeautifulSoup
import pandas as pd
import os
import csvres = requests.get("https://www.haosix.com/gonglue/411")

然后我们通过 beautifulsoup 来解析网页

soup = BeautifulSoup(res.text)
div = soup.find('div', class_="bbcode-body bbcode-body-v2 markdown-body")
p_list = div.find_all("p")[2:-1]

现在列表 p_list 当中就是我们需要的数据了

接下来我们编写一个处理数据的函数,把网页上的数据转换成我们需要的形式

def deal_str(data):rel_dict = {}name = data.split(":")name1 = name[0]name_rel = name[1].split("、")if r"(" in name_rel[0]:for i in name_rel:tmp = i.split("(")rel_dict[tmp[0]] = tmp[1].split(")")[0]return [name1, rel_dict]return [name1, "无"]

我们来看下函数效果

deal_str('裴擒虎:杨玉环(女神与同伴)、公孙离(收留之人与同伴)、弈星(互补的同伴)、明世隐(下属与首领)、苏烈(下属与曾经上司)')

得到了英雄名称以及和他有关系的英雄关系信息

再下来就是保存到 csv 文件

def save_data_name(data_name, list_info):if not os.path.exists(data_name + r'.csv'):# 表头name = ["name","id"]# 建立DataFrame对象file_test = pd.DataFrame(columns=name, data=list_info)# 数据写入file_test.to_csv(data_name + r'.csv', encoding='utf-8', index=False)else:with open(data_name + r'.csv', 'a+', newline='', encoding='utf-8') as file_test:# 追加到文件后面writer = csv.writer(file_test)# 写入文件writer.writerows(list_info)

一切准备工作完毕之后,就可以整合代码了

content = {}
index = 0
for p in p_list:content = deal_str(p.text)save_data_name("name", [[content[0], index]])if type(content[1]) == dict:for k,v in content[1].items():print([content[0], k, v])save_data_relation("relation", [[content[0], k, v]])index += 1

处理过程如下

这要我们就得到了两个 csv 文件,一个保存了英雄名称,另一个保存了英雄关系信息

Neo4j 使用简介

Neo4j 是目前最为流行的图数据库,用于存储丰富的关系数据。图是由顶点(Vertex),边(Edge)和属性(Property)组成的,顶点和边都可以设置属性,顶点也称作节点,边也称作关系,每个节点和关系都可以由一个或多个属性

对于 Neo4j 的安装就不再赘述了,想我这里就是在自己本地的 Windows 上安装了一个,还是比较简单的

安装完成之后,我们一般可以在本地开发 Neo4j 控制浏览器

http://localhost:7474/browser/

然后我们把前面生成的两个文件放到 Neo4j 安装目录的 import 文件夹下(安全考虑,Neo4j 默认只能从该目录下导入文件)

接下来我们在 Neo4j 命令行中编写 Cypher 命令,先导入 csv 文件
英雄名称文件:

LOAD CSV WITH HEADERS FROM "file:///name.csv" AS line MERGE (p:person{name:line.name,id:line.id})

英雄关系文件:

LOAD CSV WITH HEADERS FROM "file:///relation.csv" AS relations MATCH (entity1:person{name:relations.name1}), (entity2: person{name:relations.name2}) CREATE (entity1)-[:rel{relation:relations.relation}]->(entity2)

如果一切不出意外,我们就已经完成了数据导入,下面就可以查看关系了

MATCH p=()-->() return p;

我们先来看一张整体图

不是特别清晰,我们来看看局部

好了,今天的分享就到这里,我们下次见,不要忘记一键三连哦!

送书时间

本次送书是《对比Excel,轻松学习Python报表自动化》,这本书的主题就是数据分析师角度的报表自动化。

全书主要分为 个部分:

  • 第 1 部分介绍 Python 基础知识,让读者对 Python 中常用的操作和概念有所了解;

  • 第 2 部分介绍格式相关的设置方法,包括字体设置、条件格式设置等内容;

  • 第 3 部分介绍各种类型的函数;

  • 第 4 部分介绍自动化相关的其他技能,比如自动发送邮件、自动打包等操作。

真正做过数据分析师的人应该知道,一份报表大体其实就部分:数据处理+格式设置。

数据处理就是对数据进行缺失值、重复值、异常值、还有加减乘除等处理。

格式设置主要就是字体设置、单元格设置、条件格式这些。

关于数据处理,第一本书《对比Excel,轻松学习Python数据分析》讲得差不多了,《对比Excel,轻松学习Python报表自动化》一书更多讲述格式设置和函数运算等内容。

公众号回复:送书 ,参与抽奖(共3本)

点击下方回复:送书  即可!

大家如果有什么建议,欢迎扫一扫二维码私聊小编~

回复:加群 可加入Python技术交流群

送书 | 用 Neo4j 理一理王者荣耀英雄之间千丝万缕的关系,挺好玩!相关推荐

  1. 2020赛季-王者荣耀英雄分析

    2020-王者荣耀英雄分析 目录 2020-王者荣耀英雄分析 前言: 任务1:数据处理 任务2:数据可视化与分析 2.1选择要处理的列 2.2数据可视化 2.3聚类算法 本章节全部代码 第二标签(整体 ...

  2. 领铠服务器没有角色信息,王者荣耀英雄印记赠送功能出bug没显示怎么办 铠的印记消失出bug什么情况...

    王者荣耀腾讯版V1.20.1.17 安卓最新版[7月新版] 类型:角色扮演大小:465.2M语言:中文 评分:7.8 标签: 立即下载 王者荣耀英雄印记消失怎么办 王者荣耀玩家现在点击赠送印记,会受到 ...

  3. 小案例:搭建简易版王者荣耀英雄购买商城网页版

    目录 一.网页赏析: 二.代码分三部分: 1.html代码: 2.main.css赏析: 3.初始化reset.css代码: 三.主要素材下载地址: 一.网页赏析: 二.代码分三部分: 1.html ...

  4. 图片链接用src不能被爬虫爬到吗_爬虫:带你一键爬取王者荣耀英雄皮肤壁纸

    一.前言 王者荣耀这款手游,想必大家都玩过或听过,游戏里英雄有各式各样的皮肤,制作得很精美,有些拿来做电脑壁纸它不香吗.本文带你利用Python爬虫一键下载王者荣耀英雄皮肤壁纸. 1. 目标 创建一个 ...

  5. 北京环球影城上线王者荣耀英雄主题活动

    4月9日消息, "北京环球影城王者荣耀英雄盛会"主题活动于4月8日至7月3日登场. 据悉,北京环球度假区携手腾讯旗下"王者荣耀"IP,选取王者荣耀中" ...

  6. node抓取王者荣耀英雄资料库

    用node写的爬虫,抓取王者荣耀英雄资料库,只是为了学习,侵删! 主要包括(基本上相关的都抓取): 召唤师技能 铭文 装备 英雄 皮肤 英雄故事 英雄技能 推荐铭文 推荐装备 技能加点 没有搞懂如何动 ...

  7. 王者荣耀英雄选择系统项目

    "王者荣耀"英雄选择系统 先欣赏几张英雄图片 下面让我们一起进入正题! package Wangzexitong; import java.util.Scanner; /**  * ...

  8. Java爬虫 --- 爬取王者荣耀英雄图片

    Java爬虫 - 爬取王者荣耀英雄图片 import org.jsoup.Connection; import org.jsoup.Jsoup; import org.jsoup.nodes.Docu ...

  9. (已更新)最新王者荣耀英雄图鉴小程序源码,包含王者中各大板块内容介绍

    王者英雄图鉴是一个关于王者荣耀英雄介绍的小程序,有装备.技能.铭文.英雄.皮肤等各大板块,里面不仅详细介绍了各类信息还有教程等资源,进入英雄详情时还会播放台词. 小程序使用 uni-app 和 Tai ...

最新文章

  1. 系统进程管理及用户登陆监控
  2. 理解特征统计偏差、方差、平均值、中位数、百分数等等
  3. POJ 2976 01分数规划基础题目
  4. Docker入门 一 安装Docker
  5. STM32 HAL库、标准外设库、LL库(STM32 Embedded Software)
  6. Winforn中导入Excel并显示然后获取多选框选中的内容
  7. 【收藏】deepin环境安装nodejs
  8. 对mysql日志进行操作的总结包括 启用,过期自动删除 等
  9. imagePreview接口调用微信自带图片播放器
  10. 微软编程题:寻找最小的k个值
  11. webpack打包器小结(1)
  12. 【JUC】JDK1.8源码分析之ConcurrentHashMap
  13. Spring mvc @PathVaribale
  14. Java中字符输入输出流
  15. python的property用法_Python的@property使用方法详解
  16. 关系抽取---(二)卷积神经网络
  17. 好用的文件对比工具Beyond Compare 4 for Mac 4.4.2
  18. PX4模块设计之八:Ubuntu 20.04搭建FlightGear模拟器
  19. matlab 怎么打开.p文件,matlab p文件肿么打开 或者 运行
  20. 【scipy】scipy.linalg.slove 求解线性方程组 python

热门文章

  1. 操作系统学习笔记(八):连续内存分配——碎片整理
  2. mysql server 5.7_MySQL Server更方便下载|MySQL Server v5.7 正式版 下载 - 巴士下载站
  3. 618有什么运动装备好、好用的运动装备清单
  4. 小马哥-----高仿红米note H19ST 单卡4G版拆机主板图与开机界面图面面观
  5. 3704对象关闭时_对象关闭时,不允许操作,运行时错误3704
  6. 琥珀为证!它在恐龙时代就GET了“吐舌头”的技能!
  7. 实现Java生成随机图片验证码
  8. python批量读取dbf_python下用dbfread操作DBF文件
  9. 微信小程序布局中的单位及使用:px、rem、rpx、vw、vh、n%
  10. 前端入门(二)npm包管理+模块化+bable转码器+webpack打包+vue-element-admin