首页 » 技术分享 » Python爬虫爬取猫眼电影风语咒影评评论信息

Python爬虫爬取猫眼电影风语咒影评评论信息

 

风语咒作为扛起国漫崛起的又一国漫之作,爬取风语咒猫眼的电影评论数据,以便对其评论做之后的数据分析。

此次demo的流程图如下:

一.找到猫眼电影中风语咒影评得json数据:

l

找出url后,往下滚动后,发现其并无评论页面得接口,这时通过f12启动手机版得调试模式,通过手机端得界面寻找此电影的评论的接口位置。刷新后如下:

找到位置后,点开评论区,因为其中的评论采用的是js的方式加载,故当其向下拉动时,通过Network可以获得其中的json串,通过json串得出其中的评论json的url。

二.观察url,寻找其中的参数规律:

风语咒影评的某评论json的url如下:

http://m.maoyan.com/mmdb/comments/movie/1217513.json?_v_=yes&offset=45&startTime=2018-08-23%2015%3A24%3A16

 通过分析其中的参数并在浏览器上尝试,可以发现其中offset和starttime的参数均为可变的,经实践得知,starttime参数的含义是该条评论的时间,而offset指的是该页评论的index;那么我们可以通过格式化这两个参数的值,来对影评评论数据进行抓取。

  因为我们暂时不知其中的offset到多少会为空,所以我们可以使用for循环对page进行操作,通过观察每页中的数据,发现每页评论的条数为15条,故在此每次遍历15条,即第一次的offset为0的话,下一次遍历的offset则为15,同样日期也可以用range的方法进行赋值:

#抓取20号到23号的数据
date = range(20,23)  
for day in date:
    for page in range(0,100):
        url1 = url.format(page*15,str(day))

三.load其中的json内容,从中筛选提取出自己需要的数据:

   通过将得到的json数据解析后,发现其中评论在cmt和hcmt两个key内,通过loads的方法将json转化为字典:

def get_json(url,k_name):
    json_str = requests.get(url=url,headers=headers).content
    data = json.loads(json_str)
    data = data[str(k_name)]
    return data

  楼主中间尝试了很多次,发现有时会经常出现重复的数据,经过研究发现,cmt中是最新的评论,而hcmt中是最热的10条评论,只有10条(怪不得一直看到这几条。。。)

   于是采用对整体进行cmt采取遍历,但是在遍历中,只对hcmt中的评论的content内容取1次的方法,在外围设置cnt计数实现:

# 最新短评
data_cmts = get_json(url1,'cmts')
# 最热短评
data_hcmts = get_json(url1, 'hcmts')
for data_cmt in data_cmts:
    item = {}
    if cnt == 0:
        for data_hcmt in data_hcmts:
            #最热评论
            print(data_hcmt['content'])
            cnt+=1
    #输出最新评论
    print(data_hcmt['content'])

 

四.保存成csv格式的文件

   最终将文件保存,由于评论数据中不止有评论内容,还包含评论时间,评论作者,评论地点等一些内容,所以采用了pandas的方法来存储成csv格式,考虑到采集数据过程中可能会出现异常,故使用try,,except的格式来进行,当采集到的数据为空时,就表示采集完毕,保存到csv文件中:

  

df = pd.DataFrame(columns=['city','content'])
try:
   ....
    item = {}
    item['city'] = data_cmt['cityName']
    item['content'] = data_cmt['content']
    item['date'] = data_cmt['startTime']
    df = df.append(item, ignore_index=True)    
except Exception as e:
    df.to_csv('train_set.csv',encoding='utf_8_sig')
    continue
    

完整代码可以移步github,水平不足,希望多多拍砖,感谢!

github:

https://github.com/476736794/-

转载自原文链接, 如需删除请联系管理员。

原文链接:Python爬虫爬取猫眼电影风语咒影评评论信息,转载请注明来源!

0