相信大家的童年一定离不开动漫,无论你是哪个年龄段的,或多或少都听说过《灌篮高手》《机器猫》《名侦探柯南》,听到这一部部经典的动漫作品的名字,总有一部动漫打开了你的回忆之窗。今天我们就来爬点好玩的,追忆一下我们远去的童年记忆……



python 动漫动作识别 python动漫编码_html

童年动漫



爬虫,也称为网络蜘蛛,随着互联网的发展我们对数据量、信息量的需求越来越大,所以爬虫这种智能工具的出现为我们的生活带来了便利,也为数据的获取提供了方便。那今天我们所爬取的这几部动漫采用的编程语言为Python,因为Python这门语言在实际操作的过程中相对简单与快捷,所以我们的童年回忆就由Python来为我们打开!




python 动漫动作识别 python动漫编码_动漫_02

爬虫



我们来看一下要爬取的动漫




python 动漫动作识别 python动漫编码_词云_03


python 动漫动作识别 python动漫编码_python 动漫动作识别_04


python 动漫动作识别 python动漫编码_好玩的html代码_05


一.爬虫部分

本文主要使用requests模块解析网页,xpath来定位想要抓取的信息,线上代码:

import requestsfrom bs4 import BeautifulSoupimport codecsfrom lxml import etreeimport pandas as pdimport re

以上部分主要是把常用的模块载入,BeautifulSoup是不错的解析方法,但是感觉相对本次用到的xpath,后者更方便快捷,非常适合初学者

## 封装一个解析网页的函数def download_page(url):    headers = {        'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36'    }    data = requests.get(url, headers=headers).content    return data

这里的'User-Agent'是用来伪装成浏览器,这样我们的爬虫就被伪装成了一次网页访问而不被网站轻易封掉。

## 豆瓣搜索喜爱的动盘,找到相关评论页url='https://movie.douban.com/subject/1998799/comments?start='  #灌篮高手url='https://movie.douban.com/subject/1463371/comments?start='  #名侦探柯南url='https://movie.douban.com/subject/1782004/comments?start='  #名侦探柯南com=[]name=[]date=[]time=[]rating=[]good=[]for j in ['h','m','l']:      #评分高、中、低,避免没有打分的情况    for i in range(0,200,20):        hxg=download_page(url+str(i)+'&limit=20&sort=new_score&status=P&percent_type='+j)        html=etree.HTML(hxg)        com=com+html.xpath('''.//span[@class='short']/text()''')        name=name+html.xpath('''.//span[@class='comment-info']/a/text()''')        date=html.xpath('''.//span[contains(@class,'comment-time')]''')        for i in date:            time.append(i.attrib.get('title'))         star=html.xpath('''.//span[contains(@class,'allstar')]''')        for i in star:            rating.append(i.attrib.get('title'))          good=good+html.xpath('''.//span[@class='votes']/text()''')

这里的关键就是上文提到的xpath语法,可以快速实现准确定位你感兴趣的信息

二.分析部分

分别爬取我们感兴趣的动漫作品评论,形成不同的数据框后concat到一起

data1['record']='灌篮高手'data2['record']='名侦探柯南'data3['record']='哆啦A梦'# 合并dataframedata=pd.concat([data1,data2,data3])data['num']=1data['good']=data['good'].apply(str)data['year']=data['time'].apply(lambda x:str(x)[0:4])data['month']=data['time'].apply(lambda x:str(x)[0:7])data['date']=data['time'].apply(lambda x:str(x)[0:10])

三.词云

爬取悼的评论最能体现小伙伴们对作品的认知,那么我们来看一下这些作品的评论词云

首先还是载入所需要的各种模块

from os import pathfrom wordcloud import WordCloud, ImageColorGeneratorimport jiebaimport pandas as pdimport numpy as npfrom scipy.misc import imreadfrom PIL import Image

这里同样采用封装函数的方式,可以更便捷的批量处理,其中包括jieba分词,以及去停用词

def jieba_go(data_list):    line=data_list.apply(str)   #导入要分词的list    #list无法完成jieba分词,将list转化为str    line=','.join(line)     ## jieba 分词    word_list=jieba.cut(line,cut_all=False)    word_cut=list(word_list)    ## 停用词表    stoplist=open('wordclean_list.txt',encoding="gbk")    stopwords = [line.strip() for line in open('wordclean_list.txt', 'r',encoding="gbk").readlines()]    for add in ['动画','漫画','动漫','喜欢']:  # 手动添加想要去掉的词         stopwords.append(add)    # 去停用词    final=[]    for seg in word_cut:        if seg not in stopwords:            final.append(seg)    type(final)    final=','.join(final)        return final

完成jieba分词、去停用词后形成打碎的字符串,我们就可以画词云了,注意调整展示图片

def wdcloud_go(final):    pic='樱木花道.jpg'    #pic='柯南.jpeg'    #pic='机器猫.jpeg'        cloud_mask = np.array(Image.open(pic))    back_color = imread(pic)    image_colors = ImageColorGenerator(back_color)    wd=WordCloud(font_path='苹方黑体-中黑-简.ttf',                 background_color='white',                 max_words=20000,                 max_font_size=200,                 random_state=10,                 width=800,  # 图片的宽                 height=500,  #图片的长                 mask=cloud_mask                 )    WD=wd.generate(final)    import matplotlib.pyplot as plt    WD.to_file('jay_wordcloud.jpg')    # 显示词云图片    plt.figure(figsize=(5,5),dpi=150)    plt.axis('off')  #去掉坐标轴    plt.imshow(WD.recolor(color_func=image_colors))    plt.show()


python 动漫动作识别 python动漫编码_动漫_06


python 动漫动作识别 python动漫编码_动漫_07


python 动漫动作识别 python动漫编码_好玩的html代码_08


基本上大功告成!如果大家喜欢这类的文章,我可以在以后的文章中多多介绍我曾经在人工智能领域做过的项目,让大家重新认识一下计算机科学界那些非常有趣的创意和生活!!!

我是90后,逗比理工男,经常在人工智能、计算机科学领域工作,我将在我的文章中为大家带来更为科学的数据奥秘!

python 动漫动作识别 python动漫编码_好玩的html代码_09