《战狼Ⅱ》破50亿 Python爬虫抓取获取12万条影评分析看它在说来源:m.qikuedu.com
《战狼Ⅱ》破50亿了,你还不知道它在说啥?本文通过Python爬虫抓取获取12万条影评分析,告诉你《战狼Ⅱ》用什么撩到了你。
先上一张炸裂的海报。
数据的获取
对于数据的获取,本文采用的是Python爬虫的方式获取的数据。用到的主要是requests包与正则包re。该程序并未对验证码进行处理。
之前也爬取过豆瓣的网页,当时由于爬取的内容少,所以并没有遇到验证码的事情。在写本文爬虫的时候,原以为也不会有验证码,但是当爬取到大概15000个评论的时候跳出来验证码。然后我就想不就是十二万吗?最多我也就是输入大概十几次验证码,所以就没有处理验证码的事情。
但是接下来的事情就有点坑到我了。爬取15000左右评论并输入验证码的时候,我以为会接下来爬取到30000左右,可是才爬了3000左右就不行了,还是要输验证码。然后就一直这样,跌跌撞撞,有时候爬取好长时间才需要验证码,有时候则不是。不过最后还是把评论爬取下来了。
爬取的内容主要是:用户名,是否看过,评论的星星点数,评论时间,认为有用的人数,评论内容。参看下图(用户名已隐藏):
这个是影评的起始页:豆瓣影评
以下是Python爬虫的代码
import
requests
import re
import pandas as pd
url_first='https://movie.douban.com/subject/26363254/comments?start=0'
head={'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko)Ubuntu Chromium/59.0.3071.109 Chrome/59.0.3071.109 Safari/537.36'}
html=requests.get(url_first,headers=head,cookies=cookies)
cookies={'cookie':'你自己的cookie'} #也就是找到你的账号对应的cookie
reg=re.compile(r'.*?.*?(.*?).*?(.*?).*?title="(.*?)">.*?title="(.*?)">.*?class=""> (.*?)\n',re.S) #评论等内容
while html.status_code==200:
url_next='https://movie.douban.com/subject/26363254/comments'+re.findall(reg,html.text)[0]
zhanlang=re.findall(ren,html.text)
data=pd.DataFrame(zhanlang)
data.to_csv('/home/wajuejiprince/文档/zhanlang/zhanlangpinglun.csv', header=False,index=False,mode='a+') #写入csv文件,'a+'是追加模式
data=[]
zhanlang=[]
html=requests.get(url_next,cookies=cookies,headers=head)
首先加载要用到的所有包:
library(data.table)
library(plotly)
library(stringr)
library(jiebaR)
library(wordcloud2)
library(magrittr)
导入数据并清洗:
dt<-fread(file.choose()) #导入数据
dt[,c("V8","V9","V10","V11","V12","V13"):=NULL] #删除空列
#一条命令清洗数据
my_dt<-dt[str_detect(赞成评论数,"\\d+")][评论有用=='有用'][是否看过=="看过"][五星数%in%c("很差","较差","还行","推荐","力荐")]