原标题:Python 爬取 3 万条游戏评分数据,原来程序员最爱玩的游戏竟然是......

作者 |量化小白H

责编 | 胡巍巍

本文爬取了豆瓣游戏网站上所有可见的游戏评分数据进行分析,全文包括以下几个部分:

数据获取

数据总览

游戏类型分析

游戏平台分析

游戏名称分析

高分游戏汇总

代码汇总

全文数据获取及分析均基于python3.6完成。

数据获取过程

数据来自豆瓣游戏,网址:

https://www.douban.com/game/explore

页面内一条游戏数据展示如下,显示出来的一条评论是游戏的点赞数最多的评论,我们分析需要的数据包括游戏名称、游戏类型、游戏平台、游戏评分、游戏评价人数及最热评价。

浏览器中按F12打开开发者工具,选择NetWork-XHR,页面拉倒底部点显示更多,可以看到获取到的数据文件。

右键打开后看到是游戏的信息,通过改变网址中more后面的数字,可以获取更多数据。但尝试之后发现,每次可以获取20条数据,more后面的数字最大可以设置为500,超过500后获取不到数据,也就是说最多能获取10000条数据,但底部total字段显示总的游戏数据有52049条。

所以为了获取更多数据,我们分类型爬取数据,每次选中一个类型,重复上述过程,可以得到数据,观察后发现每个类型下的游戏数据都不超过10000条,这样每个类型的数据都能全部获取,最后把所有数据拼到一起即可。

以动作类游戏为例,动作类游戏第二页数据对应的网址如下:

https://www.douban.com/j/ilmen/game/search?genres=1platforms=q=sort=ratingmore=2

多尝试几次之后能看出规律:genres后面是游戏类型,动作类型对应的genres = 1,platforms后面是平台类型,q后面的是游戏名称关键字,sort后面是排序方式,默认是按评分排序,more后面是页码。

所以我们需要知道每个游戏类型对应的数字,可以在开发者工具中选Element,用小箭头进行定位,快速获取所有游戏类型对应的数字:

定位后发现,每种类型包含在一个class内,动作类型对应的数字在values里。

依次点开每个class,获取每个类型对应的数字,整理如下:

{1:"动作",5:"角色扮演",41:"横版过关",4:"冒险",48:"射击",32:"第一人称射击",2:"策略",18:"益智",7:"模拟",3:"体育",6:"竞速",9:"格斗",37:"乱斗/清版",12:"即时战略",19:"音乐/旋律"}

之后就可以用python中的request+json包循环获取数据了,代码附在最后。爬到的一条游戏数据样式如下:

需要的数据包括:

n_ratings:评分人数

platforms:平台

rating:评分

star:星级

title:游戏名称

content:最热评论

游戏类型因为已经我们已经分类型爬取,所以每次爬完之后用代码加上对应的类型即可,但能看到一个游戏可能对应多种类型,或者在多个平台上同时发布,所以在后面的分析中需要处理,其他字段分析中用不到。

数据总览

最终爬下来数据有31574条,还是没拿到所有5万条,这已经是最大可见数据条数了,数据样式如下:

genres是网站上给的类型,type是爬取过程中加上去的类型,后文的分析都用type。

简单统计后发现,31574条数据中有17751条数据都是没有评分的,此外,由于一种游戏可能属于多个类别,所以一部分游戏是重复出现的,只有type不同。

首先对数据整体做一个统计描述,对于没有评分的数据采用两种方法处理,视为评分为0和删除数据。

视为评分为0时:

删除没有评分的数据:

两幅图的5个变量(从左往右、从上至下)均为:星级、评分、评分人数、游戏名称长度、游戏发行平台数,加入游戏名称长度和发行平台数是想探究游戏名称的长度以及发行的平台数是否和游戏评分有一定的关系。

从这两幅分布图能得到一些结论:

星级(star)和评分(rating)是严格单调关系的,星级是分级靠档后的评分,所以之后的分析中只考虑星级不考虑评分。

两种评分处理方法下,各变量的分布基本不变,大部分游戏评分集中在7.5左右,评分跟发行平台数、游戏名称长度关系不是非常明显。

游戏类型分析

各类型游戏数:

豆瓣给出的游戏共有15类,各类型游戏数统计如下:

动作、冒险、角色扮演、益智、策略类的游戏数量排到前5,第一人称射击、即时战略、音乐、乱斗/清版、射击类排到后5。

豆瓣把第一人称射击、射击分成两类,乱斗跟冒险、动作的区别似乎不是很大?这里不是很理解。

不过射击类的游戏模式太过单一,数量确实比较少,高质量的射击游戏不外乎这两年火起来的吃鸡游戏,还有很早之前的CS系列。

而动作、冒险、角色扮演类的游戏从世界观设定、剧情设计上都可以有很多新意,时不时会有一些让人眼前一亮的新作品,也很容易做成一个系列。

各类型游戏平均评分人数:

评分人数最多的是第一人称射击类游戏,冒险、即时战略类也较多。

各类型游戏均分:

各类型游戏的均分如下,无评分视为0时,由于各种游戏数量的差别,导致游戏数较少的类型平均分更高,但删掉无评分数据后,各种类型的评分基本是持平的,在7.5分上下波动。

总体来看,各种类型游戏的平均质量基本是一样的,只是各种类型的用户基数差别大一些。

游戏类型关联分析:

之前提到,一个游戏可能属于多个类别,比如仙剑同时属于角色扮演和冒险。对所有的游戏类别进行交叉分析,统计同时属于两个类别的游戏个数,结果如下:

可以看到,动作+冒险,角色扮演+动作/冒险、横版过关+动作/冒险、益智+冒险 组合的游戏都是非常多的,动作、冒险大概是万能类别了。

音乐旋律、竞速类的游戏跟其他类别交叉几乎没有,这两种类型游戏形式比较单一,大部分都是拼手速操作,各种游戏同质性比较高。侠盗飞车是其中少有的融合了动作冒险的经典竞速类游戏,但当年玩罪恶都市的快感似乎跟竞速没啥关系。

游戏平台分析

游戏平台类型非常多,整体分为手机、电脑、游戏机三类,游戏机大部分是任天堂(Wii,GB)、索尼(PS)、微软(Xbox)的产品。

之前提到,一款游戏可能同时在多个平台上发布,这给分析过程带来了一定难度,观察后发现,豆瓣的平台分布是越靠前的平台越大众化,所以对于有多个平台的游戏,取第一个平台,视为他的主要发布平台进行分析。

各平台游戏数:

鉴于平台数太多,我们把所有游戏数目小于100的平台汇总,记为“其他”,各个平台游戏数分布如下:

PC游戏数超过总数的50%,除此外,大部分游戏在iphone,PS2,PS3上,没有Android的原因在于豆瓣上对于游戏平台把iphone放在Android前面,大部分手游是在这两个操作系统上同时发布的,之前的处理方法导致Android数目非常少归到了“其他”中去。

各平台均分:

删除无评分数据游戏后,各平台均分基本一致。其中均分最高的GB是任天堂1989年推出的Game Boy 游戏机,GBA是任天堂2001年推出的Game Boy Advanced游戏机。你可能没有用过这两款设备,但当中的经典游戏你一定玩过。

各平台平均评分人数:

各平台评分总人数来说,PC占据绝对优势,但平均人均数来看,人数最多的是PS4和Nintendo Switch。

游戏名称分析

一个有意思的问题是,游戏都是怎样命名的呢?有没有什么规律?

爬取下来的游戏名称中大部分同时包含中文、英文,这里我们只分析中文,将所有游戏名称拼到一起用正则提取其中的中文,去掉长度为1的词,和词频小于10的词,对剩下的高频词按词频做词云如下:

词语能反映出游戏的世界观,大部分的游戏会用到战争、战士、传奇、联盟、幻想这样一些虚构的有奇幻色彩的词语,同时也不乏三国、火影等等一些源于历史、动漫、小说、电影作品的词。还有一些开门见山直接说明游戏形式的词语,比如迷宫、格斗、大战、足球等等。

高分游戏汇总

对游戏的整体分析只是统计分析的需要,但对一个游戏迷来说,只需要告诉他哪些游戏好就ok了,不好的游戏并不关注,我们提取所有游戏中评分超过9.5的部分,游戏类型分布如下:

考虑到评分人数太少时,评分结果不一定具有代表性,所以我们只选择其中评分人数超过100的部分,共84款游戏汇总如下,看看有没有你玩过or你想玩的呢?

代码汇总

爬虫代码:

#-*-coding:utf-8-*- import urllib import requests from fake_useragent import UserAgent import json import pandas as pd import time import datetime import os #发送get请求 """ genres:游戏类别 n_ratings:评分人数 platforms:平台 rating:评分 content:最热评论 star:星数 title:游戏名称 """ def getDoubanGame (genres) : id_all1={ 1 : "动作" , 5 : "角色扮演" , 41 : "横版过关" , 4 : "冒险" , 48 : "射击" , 32 : "第一人称射击" , 2 : "策略" , 18 : "益智" , 7 : "模拟" , 3 : "体育" , 6 : "竞速" , 9 : "格斗" , 37 : "乱斗/清版" , 12 : "即时战略" , 19 : "音乐/旋律" } comment_api= 'https://www.douban.com/j/ilmen/game/search?genres={}platforms=q=sort=ratingmore={}' headers={ "User-Agent" :UserAgent(verify_ssl= False ).random} response_comment=requests.get(comment_api.format(genres, 1 ),headers=headers) json_comment=response_comment.text json_comment=json.loads(json_comment) col=[ 'name' , 'star' , 'rating' , 'platforms' , 'n_ratings' , 'genres' , 'content' ] dataall=pd.DataFrame num=json_comment[ 'total' ] print( '{}类别共{}个游戏,开始爬取!' .format(id_all1[genres],num)) i= 0 while inum: if i== 0 : s= 1 else : s=json_comment[ 'more' ] response_comment=requests.get(comment_api.format(genres,s),headers=headers) json_comment=response_comment.text json_comment=json.loads(json_comment) n=len(json_comment[ 'games' ]) datas=pd.DataFrame(index=range(n),columns=col) for j in range(n): datas.loc[j, 'name' ]=json_comment[ 'games' ][j][ 'title' ] datas.loc[j, 'star' ]=json_comment[ 'games' ][j][ 'star' ] datas.loc[j, 'rating' ]=json_comment[ 'games' ][j][ 'rating' ] datas.loc[j, 'platforms' ]=json_comment[ 'games' ][j][ 'platforms' ] datas.loc[j, 'n_ratings' ]=json_comment[ 'games' ][j][ 'n_ratings' ] datas.loc[j, 'genres' ]=json_comment[ 'games' ][j][ 'genres' ] datas.loc[j, 'content' ]=json_comment[ 'games' ][j][ 'review' ][ 'content' ] i+= 1 dataall=pd.concat([dataall,datas],axis= 0 ) print( '已完成{}%!' .format(round(i/num* 100 , 2 ))) time.sleep( 0.5 ) dataall=dataall.reset_index(drop= True ) dataall[ 'type' ]=id_all1[genres] return dataall id_all={ "动作" : 1 , "角色扮演" : 5 , "横版过关" : 41 , "冒险" : 4 , "射击" : 48 , "第一人称射击" : 32 , "策略" : 2 , "益智" : 18 , "模拟" : 7 , "体育" : 3 , "竞速" : 6 , "格斗" : 9 , "乱斗/清版" : 37 , "即时战略" : 12 , "音乐/旋律" : 19 } id_all1={ 1 : "动作" , 5 : "角色扮演" , 41 : "横版过关" , 4 : "冒险" , 48 : "射击" , 32 : "第一人称射击" , 2 : "策略" , 18 : "益智" , 7 : "模拟" , 3 : "体育" , 6 : "竞速" , 9 : "格斗" , 37 : "乱斗/清版" , 12 : "即时战略" , 19 : "音乐/旋律" } for i in list(id_all.values): dataall=getDoubanGame(i) filename= '游戏类别_' +id_all1[i]+ '.xlsx' filename=filename.replace( '/' , '' ) dataall.to_excel(filename)

数据总览:

dataall[ 'n_platforms' ]=dataall.platforms.apply(lambda x :len(str( x ). split ( '/' ))) dataall[ 'platform' ]=dataall.platforms.apply(lambda x :str( x ). split ( '/' )[ 0 ].strip) sns.pairplot(dataall,diag_kind= 'kde' ) plt.show data2=dataall.dropna sns.pairplot(data2,diag_kind= 'kde' ) plt.show

游戏类型分析:

""" 各类型游戏分析 """ #各类型游戏数 num=len(dataall.name.unique) result=dataall.groupby('type').count['name'].reset_index.sort_values('name',ascending=False) attr=list(result.type) v=list(np.round(result.name/num,3)) pie=Pie style=Style pie_style=style.add( label_pos= "center" , is_label_show=True, label_text_color=None, is_legend_show=False ) pie.add( "" ,[attr[0], "其他" ],[v[0],1-v[0]],radius=[18,24],center=[10,20],**pie_style) pie.add( "" ,[attr[1], "其他" ],[v[1],1-v[1]],radius=[18,24],center=[30,20],**pie_style) pie.add( "" ,[attr[2], "其他" ],[v[2],1-v[2]],radius=[18,24],center=[50,20],**pie_style) pie.add( "" ,[attr[3], "其他" ],[v[3],1-v[3]],radius=[18,24],center=[70,20],**pie_style) pie.add( "" ,[attr[4], "其他" ],[v[4],1-v[4]],radius=[18,24],center=[90,20],**pie_style) pie.add( "" ,[attr[5], "其他" ],[v[5],1-v[5]],radius=[18,24],center=[10,50],**pie_style) pie.add( "" ,[attr[6], "其他" ],[v[6],1-v[6]],radius=[18,24],center=[30,50],**pie_style) pie.add( "" ,[attr[7], "其他" ],[v[7],1-v[7]],radius=[18,24],center=[50,50],**pie_style) pie.add( "" ,[attr[8], "其他" ],[v[8],1-v[8]],radius=[18,24],center=[70,50],**pie_style) pie.add( "" ,[attr[9], "其他" ],[v[9],1-v[9]],radius=[18,24],center=[90,50],**pie_style) pie.add( "" ,[attr[10], "其他" ],[v[10],1-v[10]],radius=[18,24],center=[10,80],**pie_style) pie.add( "" ,[attr[11], "其他" ],[v[11],1-v[11]],radius=[18,24],center=[30,80],**pie_style) pie.add( "" ,[attr[12], "其他" ],[v[12],1-v[12]],radius=[18,24],center=[50,80],**pie_style) pie.add( "" ,[attr[13], "其他" ],[v[13],1-v[13]],radius=[18,24],center=[70,80],**pie_style) pie.add( "" ,[attr[14], "其他" ],[v[14],1-v[4]],radius=[18,24],center=[90,80],**pie_style) pie.render('各类型游戏数.html') #各类型游戏均分 c_schema=[( "乱斗/清版" ,10), ( "体育" ,10), ( "冒险" ,10), ( "动作" ,10), ( "即时战略" ,10), ( "射击" ,10), ( "格斗" ,10), ( "模拟" ,10), ( "横版过关" ,10), ( "益智" ,10), ( "竞速" ,10), ( "第一人称射击" ,10), ( "策略" ,10), ( "角色扮演" ,10), ( "音乐/旋律" ,10)] result1=dataall.rating.fillna(0).groupby(dataall.type).mean.reset_index result2=dataall.rating.dropna.groupby(dataall.dropna.type).mean.reset_index v1=[result1.rating.apply(lambdax:round(x,1)).tolist] v2=[result2.rating.apply(lambdax:round(x,1)).tolist] radar=Radar radar.config(c_schema) radar.add( "游戏均分(无评分视为0)" ,v1,is_splitline=True,is_axisline_show=True,is_label_show=True) radar.add( "游戏均分(删除无评分)" ,v2,label_color=[ "#4e79a7" ],item_color= "#f9713c" ,is_label_show=True) radar.render('各类型游戏评分.html') #各类型游戏评分人数 result1=dataall.n_ratings.fillna(0).groupby(dataall.type).mean.reset_index result2=dataall.n_ratings.dropna.groupby(dataall.dropna.type).mean.reset_index attr=result1.type.tolist v1=np.round(result1.n_ratings.tolist,1) v2=np.round(result2.n_ratings.tolist,1) line=Line #line.add(x_axis=attr,y_axis=xaxis_type='category') line.add( "包含无评分" ,attr,v1,mark_point=[ "max" ],is_label_show=True) line.add( "不包含无评分" ,attr,v2,is_smooth=True,mark_point=[ "max" ],is_label_show=True,xaxis_rotate=30) line.render('各类型游戏-评分人数.html')

游戏平台分析:

""" 游戏平台分析 """ #各平台游戏数 num=len(dataall.name.unique) result=dataall.groupby('platform').count['name'].reset_index name=result.platform.tolist value=result.name.tolist wordcloud=WordCloud(width=1300,height=620) wordcloud.add( "" ,name,value,word_size_range=[20,120]) wordcloud.render('游戏平台.html') platforms=result.loc[result.name100,'platform'].tolist dataall.platform=dataall.platform.apply(lambdax:xifxinplatforms else '其他') result=dataall.groupby('platform').count['name'].reset_index.sort_values('name',ascending=False).reset_index(drop=True) attr=result.platform v1=result.name pie=Pie('各平台游戏数',title_pos='center',title_text_size=20) pie.add( "" , attr, v1, radius=[40,75],center=[50,60], label_text_color=None,is_legend_show=False, is_label_show=True ) pie.render('各平台游戏数.html') #各平台游戏评分人数 result1=dataall.n_ratings.fillna(0).groupby(dataall.platform).mean.reset_index result2=dataall.n_ratings.dropna.groupby(dataall.dropna.platform).mean.reset_index attr=result1.platform.tolist v1=np.round(result1.n_ratings.tolist,1) v2=np.round(result2.n_ratings.tolist,1) line=Line #line.add(x_axis=attr,y_axis=xaxis_type='category') line.add( "包含无评分" ,attr,v1,mark_point=[ "max" ],is_label_show=True) line.add( "不包含无评分" ,attr,v2,is_smooth=True,mark_point=[ "max" ],is_label_show=True,xaxis_rotate=70) line.render('各平台游戏-评分人数.html') #各平台游戏均分 result1=dataall.rating.fillna(0).groupby(dataall.platform).mean.reset_index result2=dataall.rating.dropna.groupby(dataall.dropna.platform).mean.reset_index attr=result1.platform.tolist v1=np.round(result1.rating.tolist,1) v2=np.round(result2.rating.tolist,1) line=Line #line.add(x_axis=attr,y_axis=xaxis_type='category') line.add( "包含无评分" ,attr,v1,mark_point=[ "max" ],is_label_show=True) line.add( "不包含无评分" ,attr,v2,is_smooth=True,mark_point=[ "max" ],is_label_show=True,xaxis_rotate=70) line.render('各平台游戏-均分.html')

游戏名称分析:

""" 标题分析 """ #分词 import re stopwords=open( '中文停用词表(比较全面,有1208个停用词).txt' , 'r' ).read stopwords=stopwords.split( '\n' ) texts= '' .join(dataall.name.tolist) texts= '' .join(re.findall( r'[\u4e00-\u9fa5]' ,texts)) result=jieba.cut(texts,cut_all= False ) allwords=[word for word in result if len(word) 1 and word not in stopwords] result=pd.DataFrame(allwords) result.columns=[ 'word' ] res=result.word.groupby(result.word).count res.index.name= 'text' res=res.reset_index res=res.loc[res.word= 10 ].reset_index(drop= True ) #标题词云 name=res.text.tolist value=res.word.tolist wordcloud=WordCloud(width= 1300 ,height= 620 ) wordcloud.add( "" ,name,value,word_size_range=[ 10 , 80 ]) wordcloud.render( '游戏名称高频词.html' )

高分游戏汇总:

""" 高rating游戏分析 """ data1=dataall.loc[dataall.rating= 9.5 ] result=data1.groupby( 'type' ).count[ 'name' ].reset_index.sort_values( 'name' ,ascending= False ).reset_index(drop= True ) attr=result.type v1=result.name pie=Pie( '9.5分以上游戏' ,title_pos= 'center' ,title_text_size= 20 ) pie.add( "" , attr, v1, radius=[ 40 , 75 ],center=[ 50 , 60 ], label_text_color= None ,is_legend_show= False , is_label_show= True ) pie.render( '高评分游戏-分类型.html' ) data1[ 'title' ]=data1.name.apply( lambda x:str(x).split( ':' )[ 0 ].split( '' )[ 0 ]) #9.5以上评分,评分人数超过1000 result=data1.loc[data1.n_ratings= 100 ,[ 'name' , 'genres' , 'content' , 'platforms' , 'rating' , 'n_ratings' ]].drop_duplicates.reset_index(drop= True ) result=result.sort_values(by=[ 'n_ratings' , 'genres' ],ascending= False ).reset_index(drop= True ) result.to_excel( '评分9.5以上游戏.xlsx' )

声明:本文为作者投稿,版权归其个人所有。

文章广告为微信自动匹配,与本平台无关,如遇假冒伪劣请联系微信进行举报。

责任编辑:

python获取游戏数据_Python 爬取 3 万条游戏评分数据,原来程序员最爱玩的游戏竟然是.........相关推荐

  1. python获取天气分析_Python爬取南京市往年天气预报,使用pyecharts进行分析

    上一次分享了使用matplotlib对爬取的豆瓣书籍排行榜进行分析,但是发现python本身自带的这个绘图分析库还是有一些局限,绘图不够美观等,在网上搜索了一波,发现现在有很多的支持python的绘图 ...

  2. python爬取客流数据_Python爬取南京地铁微博发布客流数据并进行分析

    Python爬取南京地铁微博发布客流数据并进行分析 之前在网上看到了分析北京地铁客流数据的开源项目,就想试着分析一下南京地铁的客流数据,可是找了很久没有找到可以获得南京地铁客流数据的接口,就去南京地铁 ...

  3. Python爬取2万条相亲网站数据!看看中国单身男女都在挑什么!

    想必昨天的七夕节,一定是有人欢喜有人忧的一天,朋友圈里的晒照惹恼了我的一个程序员朋友,在昨晚怒爬2万条相亲网站数据,做了一次相亲男女画像! 话不多说,我们今天就以"世纪佳缘"这个相 ...

  4. python获取虎牙弹幕_python爬取虎牙弹幕礼物数据

    python爬取虎牙弹幕礼物数据 查看官方文档 找到弹幕传输的方式 生成websocket对应的参数 第一步: 第二步: 调通websocket 建立链接 获取数据和保持心跳 附上完整代码 注: 查看 ...

  5. Python 爬取 3 万条游戏评分数据,原来程序员最爱玩的游戏竟然是......

    作者 | 量化小白H 责编 | 胡巍巍 Python规划学习路线图,速领取? https://edu.csdn.net/topic/python115?utm_source=csdn_bw 本文爬取了 ...

  6. python b站 排行_Python 爬取B站 视频热度排行数据

    时间:2019-03-07 概述:抓取数据 爬虫 采集 Python 爬取bilibili站 视频热度排行视频数据,有文件为 bilibili.py,只需输入一个大模块名,如游戏模块名为'game', ...

  7. python爬取国家男女比例_Python爬取2万条相亲数据!看看中国单身男女都在挑什么...

    话不多说,我们今天就以" 世纪佳缘 "这个相亲网站为例子,爬取搜索页面当中所有的用户信息,包括"用户ID"."年龄"."城市&qu ...

  8. 做一个python的旅游系统_Python爬取13个旅游城市,告诉你新年大家最爱去哪玩?...

    2020年马上就要到了,放一天假,很多人只是选择周边游,因为时间不是很充裕,各个景点成了人山人海,拥挤的人群,甚至去卫生间都要排队半天,那一刻我突然有点理解灭霸的行为了. 今天,通过分析去哪儿网部分城 ...

  9. python爬取qq音乐周杰伦_Python爬取20万条评论,告诉你周杰伦为啥弄崩QQ音乐?

    作者 | 哈哈浩 责编 | 伍杏玲 9 月 16 日晚间,周董在朋友圈发布了最新单曲<说好不哭>. 发布后,真的让一波人哭了,一群想抢鲜听的小伙伴直接泪奔. 因为 QQ 音乐直接被搞崩了! ...

最新文章

  1. eclipse中Tomcat v8.0 Server at localhost failed to start解决以及安装方法
  2. 转载-- http接口、api接口、RPC接口、RMI、webservice、Restful等概念
  3. Java8 - Future 接口
  4. 产品需求文档 PRD
  5. 2.12 priority_queue
  6. java jdbc 连接mysql数据库 实现增删改查
  7. Windows11升级绕过不支持该处理器
  8. 绑定数据源注意的地方
  9. python批量修改图片后缀名
  10. VB.Net视频教程和VBA简单介绍下载
  11. 「首席架构师推荐」统计软件一览表
  12. JavaScript学习手册三:JS运算符
  13. 计算机主板接口识别,电脑主板上接口怎么接 主板所有接口插线功能作用识别图解...
  14. Approaching (Almost) Any Machine Learning Problem
  15. 画以载道:艺术演变的动力与社会思潮的嬗变
  16. 2020年,技术圈十大“翻车”事件!
  17. 该不该和教师一起去做项目
  18. 用友U9 BP不执行
  19. 解决The conversion of a datetime2 data type to a datetime data type resulted in an out-of-range value
  20. 入职开发很少写代码_如何简化开发人员入职:将开发环境作为代码

热门文章

  1. 程序员的生活之二--吃在大连(要来大连的,不看这个可就可惜了!看了不顶,那就太没义气了!)...
  2. (信贷风控七)申请评分卡模型Python实现(图文+代码实现)
  3. 推荐一个单干网赚好站!BUXJOB - 健康程序员,至尚生活!
  4. 亚马逊官司打赢美国国防部,云计算合同要修改的逆袭之路
  5. 项目记录: HEVC单帧码流硬解渲染
  6. html分享到微信朋友圈代码,微信分享给朋友及朋友圈JS代码
  7. 【javaEE】网络初识
  8. 五类医学图像分类 深度学习
  9. Docker -- 2 -- 利用docker部署网站和数据库
  10. mysql 中的1064_错误代码:mysql中的1064