翼度科技»论坛 编程开发 python 查看内容

【爬虫实战】用python爬豆瓣电影《热烈》短评

6

主题

6

帖子

18

积分

新手上路

Rank: 1

积分
18
目录

一、爬虫对象-豆瓣电影短评

您好!我是@马哥python说,一名10年程序猿。
今天分享一期爬虫案例,爬取的目标是:豆瓣上任意一部电影的短评(注意:是短评,不是影评!),以《热烈》这部电影为例:

爬取以上6个关键字段,含:
页码, 评论者昵称, 评论星级, 评论时间, 评论者IP属地, 有用数, 评论内容。
二、爬取结果

爬取结果截图:

三、爬虫代码讲解

首先,导入需要用到的库:
  1. import requests
  2. from bs4 import BeautifulSoup
  3. import pandas as pd
  4. import os
  5. import random
  6. from time import sleep
复制代码
定义一个请求头:
  1. # 请求头
  2. h1 = {
  3.         'Cookie': '换成自己的cookie',
  4.         'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
  5.         'Accept-Encoding': 'gzip, deflate',
  6.         'Host': 'movie.douban.com',
  7.         'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.4 Safari/605.1.15',
  8.         'Accept-Language': 'zh-CN,zh-Hans;q=0.9',
  9.         'Referer': 'https://movie.douban.com/subject/35267224/?from=showing',
  10.         'Connection': 'keep-alive'
  11. }
复制代码
定义请求地址:(规律是:第1页start是0,第2页start是20,第3页start是40,所以总结出:start=(page-1)*20)
  1. # 请求地址
  2. url = 'https://movie.douban.com/subject/{}/comments?start={}&limit=20&status=P&sort=new_score'.format(v_movie_id, (page - 1) * 20)
复制代码
用requests发送请求:
  1. # 发送请求
  2. response = requests.get(url, headers=h1, verify=False)
复制代码
用BeautifulSoup解析页面数据:
  1. # 解析页面数据
  2. soup = BeautifulSoup(response.text, 'html.parser')
复制代码
定义一些空列表,用于存放数据:
  1. user_name_list = []  # 评论者昵称
  2. star_list = []  # 评论星级
  3. time_list = []  # 评论时间
  4. ip_list = []  # 评论者ip属地
  5. vote_list = []  # 有用数
  6. content_list = []  # 评论内容
复制代码
以"评论内容"字段为例:
  1. for review in reviews:
  2.         # 评论内容
  3.         content = review.find('span', {'class': 'short'}).text
  4.         content = content.replace(',', ',').replace(' ', '').replace('\n', '').replace('\t', '').replace('\r', '')
  5.         content_list.append(content)
复制代码
把所有字段存放的列表数据组成Dataframe格式:
  1. df = pd.DataFrame(
  2.         {
  3.                 '页码': page,
  4.                 '评论者昵称': user_name_list,
  5.                 '评论星级': star_list,
  6.                 '评论时间': time_list,
  7.                 '评论者IP属地': ip_list,
  8.                 '有用数': vote_list,
  9.                 '评论内容': content_list,
  10.         }
  11. )
复制代码
进一步保存到csv文件里:
  1. # 保存到csv
  2. df.to_csv(result_file, mode='a+', header=header, index=False, encoding='utf_8_sig')
  3. print('文件保存成功:', result_file)
复制代码
以上,核心逻辑讲解完毕。
代码中还含有:转换星级函数、自动翻页、文本清洗等功能,详见文末完整源码。
最后需要说明的是,豆瓣短评页面上最多只能看到30页,再往后翻页面一直显示载入中,所以该代码最多只能爬取30页短评。

三、演示视频

演示视频:
四、获取完整源码

爱学习的小伙伴,本次分析过程的完整python源码及结果数据,我已打包好,并上传至我的微信公众号"老男孩的平凡之路",后台回复"爬豆瓣短评"即可获取。
点此直达:【爬虫实战】用python爬豆瓣电影《热烈》短评
我是@马哥python说,一名10年程序猿,持续分享python干货中!

来源:https://www.cnblogs.com/mashukui/p/douban_movie_comment_spider.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具