豆瓣热映电影影评爬取【附源码及数据集】

第一部分:首先对网页进行分析

详见:https://movie.douban.com,选择全部正在热映
在这里插入图片描述

然后点击切换城市

在这里插入图片描述
北京:https://movie.douban.com/cinema/nowplaying/beijing/

上海:https://movie.douban.com/cinema/nowplaying/shanghai/

广州:https://movie.douban.com/cinema/nowplaying/guangzhou/

通过对北京,上海,广东的url解析发现,变化的之后地点名称,于是可以通过for循环构造url,并通过request获取响应内容,为了防止反爬,还需要构造请求头信息

请求头获取方法:

chrom浏览器网页右击检查
在这里插入图片描述

构造url并获取响应内容
# 请求头
	header = {
	    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 Edg/119.0.0.0',
	    'Cookie': 'SUB=_2AkMSGWslf8NxqwFRmfoUzWLhbYt2wwDEieKkRZr-JRMxHRl-yT8XqmUFtRB6OZlFys4qvlKx3Tvb2etnSP7fIwH3xZrs; SUBP=0033WrSXqPxfM72-Ws9jqgMF55529P9D9WF4C88xAdkTOamY1VEDYLcD; XSRF-TOKEN=UWgjjU1gpBd6U_RyNd9Xj5tl; WBPSESS=V0zdZ7jH8_6F0CA8c_ussf0MMoeKVtPabByLGblUomw7z-ZSmpLzjmq_g5HzCnAVut_Q_s9RcaOG-5n78dfP6Uf4mudJLC-Tvq1Ou_UBUQHR8A7ThRBx-FfG9gqPrdYW'
	}
	# 构造url并获取响应内容
	city_list = ['beijing', 'shanghai', 'guangzhou']
	for city in city_list:
	    url = f'https://movie.douban.com/cinema/nowplaying/{city}/'
	    res = requests.get(
	        url=url,
	        headers=header,
	    ).text
响应内容

在这里插入图片描述

然后对响应内容进行分析

对响应内容进行分析并通过lxmx转换为对象

data = etree.HTML(res)
print(data)

在这里插入图片描述

然后在网页中大致找到存放每一个电影的标签并获取xpath路径
在这里插入图片描述

通过循环这一标签获得每一个电影的信息,然后再解析每一个电影的 [‘电影中文名’, ‘电影详情页链接’, ‘导演’, ‘演员’, ‘上映年份’, ‘评分’]并放在全局列表中
在这里插入图片描述

最后将数据写入csv文件

# 定义空列表存放电影数据
tiltes_cn = []  # 中文标题
links = []  # 详情页链接
director = []  # 导演
actors = []  # 演员
years = []  # 上映年份
scores = []  # 评分
fp = open('./data/douban_hot.csv', 'w', encoding='utf-8')
writer = csv.writer(fp)
writer.writerow(
    ['电影中文名', '电影详情页链接', '导演', '演员', '上映年份', '评分'])
		for 循环逻辑
  	writer.writerow([title1, movie_detail_url, director_one, actor, release_year, score])
fp.close()  # 写入完成后,关闭文件

在这里插入图片描述
完整代码见文末百度网盘

第二部分:处理详情页url并获取评论信息

第一步,将存储的csv文件通过pandas读取并做一个电影名称,详情页url和分数的映射
在这里插入图片描述

接着我们分析网页,看看评论放在详情页的哪个部分

在这里插入图片描述

通过分析发现,详情页的url和评论的url存在的差别

详情页:https://movie.douban.com/subject/26925611/?from=playing_poster

评论第一页:https://movie.douban.com/subject/26925611/comments?start=0&limit=20&status=P&sort=new_score

评论第二页:https://movie.douban.com/subject/26925611/comments?start=20&limit=20&status=P&sort=new_score

发现评论页比详情页少了 ‘?from=playing_poster’ 多了 comments?start=0&limit=20&status=P&sort=new_score,评论页中的start代表了开始的条数,limit代表了一页显示多少条,于是我们可以拼接url
在这里插入图片描述
parsel 是一个用于从 XML 和 HTML 格式中提取数据的 Python 库。它提供了一种方法,可以使用 CSS 或 XPath 表达式选择 XML 或 HTML 文本的部分内容并从中提取数据。

当您创建一个 Selector 对象时,您基本上是将一个 HTML 或 XML 的字符串传递给它。然后,Selector 对象允许您运行 .xpath().css() 方法来在该 HTML/XML 文本中导航和搜索元素,并从中提取数据。

随后,用requests.get请求网页内容并传入parsel,之后通过css选择器先找到评论大致位置,再通过for循环将每条评论都取出来。
在这里插入图片描述
在这里插入图片描述
最后将数据保存为dataframe格式,并写入csv文件

完整源代码(含数据集)

链接:https://pan.baidu.com/s/10nRcBogGYBFkaivly5o6bw?pwd=spbd
提取码:spbd
–来自百度网盘超级会员V3的分享

开源代码

加微信 AI_xiaoao
回复题目【基于XXXX的XXXX系统设计】获取源代码
所有代码均可远程部署安装+代码调试及讲解
更多爬虫代码

在这里插入图片描述

  • 13
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值