《蚁人2》豆瓣影评爬虫+简单情感分析+词云

10
11    # 验证码手动处理,输入后,需要将图片关闭才能继续执行下一步
12    captcha_link = browser.find_element_by_id(‘captcha_image’).get_attribute(‘src’)
13    urllib.request.urlretrieve(captcha_link,‘captcha.jpg’)
14    Image.open(‘captcha.jpg’).show()
15    captcha_code = input(‘Pls input captcha code:’)
16    browser.find_element_by_id(‘captcha_field’).send_keys(captcha_code)   
17
18    browser.find_element_by_css_selector(‘input[class=“bn-submit”]’).click()
19    browser.get(url)
20    browser.implicitly_wait(10)
21    return(browser)


 


**爬短评**


登录之后,转到我们要爬的蚁人2短评页面,爬完一页之后,找到**后页**的位置**click**跳转到下一页继续爬,循环一直到最后一页,从开发者工具可以看到,第一页的后页**xpath**是"//\*[@id='paginator']/a",之后每一页的后页的xpath都是"//\*[@id='paginator']/a[3]",但最后一页的xpath不为这两个,因此可以通过循环的方式,第一页之后,只要"//\*[@id='paginator']/a[3]"找得到,就跳转到下一页继续爬,直到找不到为止。


![](https://img-blog.csdnimg.cn/20190620211207901.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3podXNvbmd6aXll,size_16,color_FFFFFF,t_70)


具体爬的时候,用一个dataframe来存所有的信息,一行为一个用户的所有数据,数据位置仍然通过开发者工具获得,细节不再赘述。


 


**代码**



1def getComment(url):
2    i = 1
3    AllArticle = pd.DataFrame()
4    browser = gethtml(url)
5    while True:
6        s = browser.find_elements_by_class_name(‘comment-item’)
7        articles = pd.DataFrame(s,columns = [‘web’])
8        articles[‘uesr’] = articles.web.apply(lambda x:x.find_element_by_tag_name(‘a’).get_attribute(‘title’))
9        articles[‘comment’] = articles.web.apply(lambda x:x.find_element_by_class_name(‘short’).text)
10        articles[‘star’] = articles.web.apply(lambda x:x.find_element_by_xpath(“//[@id=‘comments’]/div[1]/div[2]/h3/span[2]/span[2]“).get_attribute(‘title’))
11        articles[‘date’] = articles.web.apply(lambda x:x.find_element_by_class_name(‘comment-time’).get_attribute(‘title’))
12        articles[‘vote’] = articles.web.apply(lambda x:np.int(x.find_element_by_class_name(‘votes’).text))
13        del articles[‘web’]
14        AllArticle = pd.concat([AllArticle,articles],axis = 0)
15        print (‘第’ + str(i) + ‘页完成!’)
16
17        try:
18            if i==1:
19                browser.find_element_by_xpath(”//
[@id=‘paginator’]/a”).click()  
20            else:
21                browser.find_element_by_xpath(“//*[@id=‘paginator’]/a[3]”).click()
22            browser.implicitly_wait(10)
23            time.sleep(3) # 暂停3秒
24            i = i + 1
25        except:
26            AllArticle = AllArticle.reset_index(drop = True)
27            return AllArticle
28    AllArticle = AllArticle.reset_index(drop = True)
29    return AllArticle


 


调用以上两个函数爬取数据,其实对于豆瓣上别的电影影评,估计稍微改一改也可以爬了



1url = ‘https://movie.douban.com/subject/26636712/comments?status=P’
2result = getComment(url)


 


最终爬下来的数据大概是这样子


![](https://img-blog.csdnimg.cn/20190620211230986.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3podXNvbmd6aXll,size_16,color_FFFFFF,t_70)


 


**2. 文本分析**


 


**描述统计分析**


首先看一看拿到的样本中各星级评价的分布情况,None表示没有星级评价。


![](https://img-blog.csdnimg.cn/20190620211239702.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3podXNvbmd6aXll,size_16,color_FFFFFF,t_70)![](https://img-blog.csdnimg.cn/20190620211248692.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3podXNvbmd6aXll,size_16,color_FFFFFF,t_70)


整体来看,三星四星评价巨多,说明大家对于蚁人2整体评价还不错。


 


再来看看哪些短评大家最认可,投票数最多


![](https://img-blog.csdnimg.cn/20190620211302752.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3podXNvbmd6aXll,size_16,color_FFFFFF,t_70)


 


嗯,怎么说呢


![](https://img-blog.csdnimg.cn/20190620211314616.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3podXNvbmd6aXll,size_16,color_FFFFFF,t_70)


初代黄蜂女的扮演者米歇尔·菲佛也成功引起了广大影迷的注意力。


 


**情感分析**


情感分析做的比较简单,主要借助于**snownlp**包,对于评论的情感倾向进行评分,0-1之间,**越正面的情感倾向对应的分值越高**,不过根据官方说明,这里用到的模型是用购物评价数据训练出来的,用到这里可能误差会有些大, 姑且一试吧,感觉效果还可以。



1# 情感分析
2def sentiment(content):
3    s = SnowNLP(str(content))
4    return s.sentiments
5
6
7result[‘sentiment’] = result.comment.apply(sentiment)
8
9# 负面评价
10result.sort([‘sentiment’],ascending = True)[:10][[‘comment’,‘sentiment’]]
11
12# 正面评价
13result.sort([‘sentiment’],ascending = False)[:10][[‘comment’,‘sentiment’]]


 


先来看看正面评价,**sentiment**表示情感得分。


![](https://img-blog.csdnimg.cn/20190620211327806.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3podXNvbmd6aXll,size_16,color_FFFFFF,t_70)


 


恩,看上去正面评价基本都是高星级评分的观众给出的,有理有据,令人信服。再来看看负面评价


![](https://img-blog.csdnimg.cn/20190620211342564.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3podXNvbmd6aXll,size_16,color_FFFFFF,t_70)


 


**分词词云**


通过**jieba**进行分词,根基**TF-IDF**算法提取关键词,代码及部分关键词如下



1texts = ‘;’.join(result.comment.tolist())
2cut_text = " ".join(jieba.cut(texts))
3keywords = jieba.analyse.extract_tags(cut_text, topK=500, withWeight=True, allowPOS=(‘a’,‘e’,‘n’,‘nr’,‘ns’))
4
5
6ss = pd.DataFrame(keywords,columns = [‘词语’,‘重要性’])
7
8fig = plt.axes()
9plt.barh(range(len(ss.重要性[:20][::-1])),ss.重要性[:20][::-1],color = ‘darkred’)
10fig.set_yticks(np.arange(len(ss.重要性[:20][::-1])))
11fig.set_yticklabels(ss.词语[:20][::-1],fontproperties=font)
12fig.set_xlabel(‘Importance’)
13
14alice_mask = np.array(Image.open( “yiren.jpg”))
15text_cloud = dict(keywords)
16cloud = WordCloud(
17        width = 600,height =400,
18        font_path=“STSONG.TTF”,
19        # 设置背景色
20        background_color=‘white’,
21
22        mask=alice_mask,
23        #允许最大词汇
24        max_words=500,
25        #最大号字体
26        max_font_size=150,
27        #random_state=777,
28   #     colormap = ‘Accent_r’
29    )
30
31
32
33plt.figure(figsize=(12,12))
34word_cloud = cloud.generate_from_frequencies(text_cloud)
35plt.imshow(word_cloud)
36plt.axis(‘off’)
37plt.show()


 


**关键词**


![](https://img-blog.csdnimg.cn/20190620211356358.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3podXNvbmd6aXll,size_16,color_FFFFFF,t_70)


分词结果来看,"**彩蛋**"毫无疑问是是蚁人2中大家最关心的点。最后,以蚁人分词词云作为文章结尾!


![](https://img-blog.csdnimg.cn/20190620211418792.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3podXNvbmd6aXll,size_16,color_FFFFFF,t_70)


 






做了那么多年开发,自学了很多门编程语言,我很明白学习资源对于学一门新语言的重要性,这些年也收藏了不少的Python干货,对我来说这些东西确实已经用不到了,但对于准备自学Python的人来说,或许它就是一个宝藏,可以给你省去很多的时间和精力。



别在网上瞎学了,我最近也做了一些资源的更新,只要你是我的粉丝,这期福利你都可拿走。

我先来介绍一下这些东西怎么用,文末抱走。

* * *



**(1)Python所有方向的学习路线(新版)**

这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。



最近我才对这些路线做了一下新的更新,知识体系更全面了。



![在这里插入图片描述](https://img-blog.csdnimg.cn/8fc093dcfa1f476694c574db1242c05b.png)



**(2)Python学习视频**



包含了Python入门、爬虫、数据分析和web开发的学习视频,总共100多个,虽然没有那么全面,但是对于入门来说是没问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。



![在这里插入图片描述](https://img-blog.csdnimg.cn/d66e3ad5592f4cdcb197de0dc0438ec5.png#pic_center)



**(3)100多个练手项目**

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。



![在这里插入图片描述](https://img-blog.csdnimg.cn/f5aeb4050ab547cf90b1a028d1aacb1d.png#pic_center)



**(4)200多本电子书**  

  

这些年我也收藏了很多电子书,大概200多本,有时候带实体书不方便的话,我就会去打开电子书看看,书籍可不一定比视频教程差,尤其是权威的技术书籍。



基本上主流的和经典的都有,这里我就不放图了,版权问题,个人看看是没有问题的。



**(5)Python知识点汇总**

知识点汇总有点像学习路线,但与学习路线不同的点就在于,知识点汇总更为细致,里面包含了对具体知识点的简单说明,而我们的学习路线则更为抽象和简单,只是为了方便大家只是某个领域你应该学习哪些技术栈。



![在这里插入图片描述](https://img-blog.csdnimg.cn/c741a91b05a542ba9dc8abf2f2f4b1af.png)



**(6)其他资料**



还有其他的一些东西,比如说我自己出的Python入门图文类教程,没有电脑的时候用手机也可以学习知识,学会了理论之后再去敲代码实践验证,还有Python中文版的库资料、MySQL和HTML标签大全等等,这些都是可以送给粉丝们的东西。



![在这里插入图片描述](https://img-blog.csdnimg.cn/9fa77af248b84885a6ec779b2ead064d.png)

**这些都不是什么非常值钱的东西,但对于没有资源或者资源不是很好的学习者来说确实很不错,你要是用得到的话都可以直接抱走,关注过我的人都知道,这些都是可以拿到的。**


  • 22
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO系列是基于深度学习的端到端实时目标检测方法。 PyTorch版的YOLOv5轻量而高性能,更加灵活和易用,当前非常流行。 本课程将手把手地教大家使用labelImg标注和使用YOLOv5训练自己的数据集。课程实战分为两个项目:单目标检测(足球目标检测)和多目标检测(足球和梅西同时检测)。  本课程的YOLOv5使用ultralytics/yolov5,在Windows和Ubuntu系统上分别做项目演示。包括:安装YOLOv5、标注自己的数据集、准备自己的数据集(自动划分训练集和验证集)、修改配置文件、使用wandb训练可视化工具、训练自己的数据集、测试训练出的网络模型和性能统计。 除本课程《YOLOv5实战训练自己的数据集(Windows和Ubuntu演示)》外,本人推出了有关YOLOv5目标检测的系列课程。请持续关注该系列的其它视频课程,包括:《YOLOv5(PyTorch)目标检测:原理与源码解析》课程链接:https://edu.csdn.net/course/detail/31428《YOLOv5目标检测实战:Flask Web部署》课程链接:https://edu.csdn.net/course/detail/31087《YOLOv5(PyTorch)目标检测实战:TensorRT加速部署》课程链接:https://edu.csdn.net/course/detail/32303《YOLOv5目标检测实战:Jetson Nano部署》课程链接:https://edu.csdn.net/course/detail/32451《YOLOv5+DeepSORT多目标跟踪与计数精讲》课程链接:https://edu.csdn.net/course/detail/32669《YOLOv5实战口罩佩戴检测》课程链接:https://edu.csdn.net/course/detail/32744《YOLOv5实战中国交通标志识别》课程链接:https://edu.csdn.net/course/detail/35209 《YOLOv5实战垃圾分类目标检测》课程链接:https://edu.csdn.net/course/detail/35284  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值