Python—豆瓣影评的爬取(指环王)

2024-04-10 20:38
文章标签 python 豆瓣 影评 指环王

本文主要是介绍Python—豆瓣影评的爬取(指环王),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 之前闲着无聊,也不知哪里找到的这部电影,每一部都是快4个小时,看的,,,,,不过画面很美

编译环境:pycharm

需要导入的第三方库:requests 、BeautifulSoup、random

具体过程如下:

1.导入第三方库:具体方法见博客——>Python——爬取单章小说内容

2.关于豆瓣爬虫,我个人觉得豆瓣网是有反爬虫机制的,不过我的经验还是太少,只知道加请求头这一种方式来进行伪装,很可惜,我昨天晚上试了很久,找的请求头都没有办法使用,一直报404和418的错,就只能拿以前用过的请求头使了。

请求头:

def get_header():#360header1={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36","Host":"erebor.douban.com"}#ieheader2={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134","Host":"movie.douban.com"}#谷歌header3={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36","Host":"movie.douban.com"}header_list=[header1,header2,header3]index=random.randint(0,2)return  header_list[index]

 在这里使用随机函数返回的原因:在下面用到请求头的时候,这个请求头是上面三个请求头中随机选择的一个请求头

3.获取想要的影评(不是短评呦!!!)的网址: 

https://movie.douban.com/subject/1291571/reviews?start=0(关于这个链接:如果大家只是打开了影评,最后的?start=0是没有 的,点击一下第二页,再返回到第一页就可以看到了)

4.对网页进行解码:

 for i in range(0,4):#这里的for循环知识为了能够获得多页的影评,最开始写的时候建议大家不要这个for循环,在下面的    start=%d"%(i*20)   中,将%d改为0  %(i*20)删去即可url="https://movie.douban.com/subject/1291571/reviews?start=%d"%(i*20)req=requests.get(url=url,headers=get_header())print("响应码",req.status_code)html = req.text# print(html)bf=BeautifulSoup(html,"lxml")# print(bf)div_comments=bf.find_all("div",class_="review-item")# print(div_comments)

注意:1.打印响应码,一般情况下,打印的响应码是200,代表访问网页成功。如果是其他值,很大的可能就是访问不成功

           2.上面打印的html  bf  div_comments 最后是代码进行到哪一步,就在哪一步打印一下,否则将来出错,不知道从哪里开始错误

            3.怎么找上面的review-item:

可知,每一条评论都是一个data-cid,每一个data-cid下都有review-item,通过这各就可以找到一个评论列表,如果使用是review-list,在列表中的就只有一个元素了。

        4.对div_comments列表也就是review-item评论列表中的每一项进行循环遍历,

在这里可打印一下每一项(每一个item)可以进行验证,自己找的是否正确(可以加一些分隔符之类的)

        for item in div_comments:print(item)print("+++++++++++++++++++++")

        5.从每一项的代码中找到每一项对应的  评论人的昵称,推荐指数,,和评语

(这里找的是为展开版的评论,能力有限,在找展开版时,总是获取不到代码,很是惭愧,想大家说)

            name=item.select(".name")[0].string# print(comment_info)# name=comment_info.stringprint(name)star=item.select(".main-title-rating")[0].get("title")# star=comment_star.get("title")print(star)comment_review=item.select("div",class_="review-short")[2].textreview=comment_review.replace("\n\n","")review=review.replace("                      ","")print(review)

        6.将爬取的评论写入文件:

            with open("指环王豆瓣评论.txt","a",encoding="utf-8") as file:file.write("作者:%s\n" % name)file.write("星级推荐:%s\n" % star)file.write("评论内容:%s\n\n" % review)file.close()

完整代码如下:

import requests
from bs4 import BeautifulSoup
import randomdef get_header():#360header1={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36","Host":"erebor.douban.com"}#ieheader2={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134","Host":"movie.douban.com"}#谷歌header3={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36","Host":"movie.douban.com"}header_list=[header1,header2,header3]index=random.randint(0,2)return  header_list[index]
if __name__ == '__main__':for i in range(0,4):url="https://movie.douban.com/subject/1291571/reviews?start=%d"%(i*20)req=requests.get(url=url,headers=get_header())print("响应码",req.status_code)html = req.text# print(html)bf=BeautifulSoup(html,"lxml")# print(bf)div_comments=bf.find_all("div",class_="review-item")# print(div_comments)for item in div_comments:# print(item)print("+++++++++++++++++++++")name=item.select(".name")[0].string# print(comment_info)# name=comment_info.stringprint(name)star=item.select(".main-title-rating")[0].get("title")# star=comment_star.get("title")print(star)comment_review=item.select("div",class_="review-short")[2].textreview=comment_review.replace("\n\n","")review=review.replace("                      ","")print(review)with open("指环王豆瓣评论.txt","a",encoding="utf-8") as file:file.write("作者:%s\n" % name)file.write("星级推荐:%s\n" % star)file.write("评论内容:%s\n\n" % review)file.close()

 上面代码中有两次使用了replace,是因为我看着获取到的内容之间间隔很大,只单单复制空白处来进行代替,会出现不在一行的错误,这个问题不同的人有不同的处理习惯,这里仅提供一种参考

前4页都已经证实可以没有问题的爬取下来

爬取结果展示:

这篇关于Python—豆瓣影评的爬取(指环王)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/892091

相关文章

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

Python如何去除图片干扰代码示例

《Python如何去除图片干扰代码示例》图片降噪是一个广泛应用于图像处理的技术,可以提高图像质量和相关应用的效果,:本文主要介绍Python如何去除图片干扰的相关资料,文中通过代码介绍的非常详细,... 目录一、噪声去除1. 高斯噪声(像素值正态分布扰动)2. 椒盐噪声(随机黑白像素点)3. 复杂噪声(如伪

Python中图片与PDF识别文本(OCR)的全面指南

《Python中图片与PDF识别文本(OCR)的全面指南》在数据爆炸时代,80%的企业数据以非结构化形式存在,其中PDF和图像是最主要的载体,本文将深入探索Python中OCR技术如何将这些数字纸张转... 目录一、OCR技术核心原理二、python图像识别四大工具库1. Pytesseract - 经典O

基于Linux的ffmpeg python的关键帧抽取

《基于Linux的ffmpegpython的关键帧抽取》本文主要介绍了基于Linux的ffmpegpython的关键帧抽取,实现以按帧或时间间隔抽取关键帧,文中通过示例代码介绍的非常详细,对大家的学... 目录1.FFmpeg的环境配置1) 创建一个虚拟环境envjavascript2) ffmpeg-py

python使用库爬取m3u8文件的示例

《python使用库爬取m3u8文件的示例》本文主要介绍了python使用库爬取m3u8文件的示例,可以使用requests、m3u8、ffmpeg等库,实现获取、解析、下载视频片段并合并等步骤,具有... 目录一、准备工作二、获取m3u8文件内容三、解析m3u8文件四、下载视频片段五、合并视频片段六、错误

Python中提取文件名扩展名的多种方法实现

《Python中提取文件名扩展名的多种方法实现》在Python编程中,经常会遇到需要从文件名中提取扩展名的场景,Python提供了多种方法来实现这一功能,不同方法适用于不同的场景和需求,包括os.pa... 目录技术背景实现步骤方法一:使用os.path.splitext方法二:使用pathlib模块方法三

Python打印对象所有属性和值的方法小结

《Python打印对象所有属性和值的方法小结》在Python开发过程中,调试代码时经常需要查看对象的当前状态,也就是对象的所有属性和对应的值,然而,Python并没有像PHP的print_r那样直接提... 目录python中打印对象所有属性和值的方法实现步骤1. 使用vars()和pprint()2. 使

使用Python和OpenCV库实现实时颜色识别系统

《使用Python和OpenCV库实现实时颜色识别系统》:本文主要介绍使用Python和OpenCV库实现的实时颜色识别系统,这个系统能够通过摄像头捕捉视频流,并在视频中指定区域内识别主要颜色(红... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间详解

一文深入详解Python的secrets模块

《一文深入详解Python的secrets模块》在构建涉及用户身份认证、权限管理、加密通信等系统时,开发者最不能忽视的一个问题就是“安全性”,Python在3.6版本中引入了专门面向安全用途的secr... 目录引言一、背景与动机:为什么需要 secrets 模块?二、secrets 模块的核心功能1. 基

python常见环境管理工具超全解析

《python常见环境管理工具超全解析》在Python开发中,管理多个项目及其依赖项通常是一个挑战,下面:本文主要介绍python常见环境管理工具的相关资料,文中通过代码介绍的非常详细,需要的朋友... 目录1. conda2. pip3. uvuv 工具自动创建和管理环境的特点4. setup.py5.