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

相关文章

Django开发时如何避免频繁发送短信验证码(python图文代码)

《Django开发时如何避免频繁发送短信验证码(python图文代码)》Django开发时,为防止频繁发送验证码,后端需用Redis限制请求频率,结合管道技术提升效率,通过生产者消费者模式解耦业务逻辑... 目录避免频繁发送 验证码1. www.chinasem.cn避免频繁发送 验证码逻辑分析2. 避免频繁

精选20个好玩又实用的的Python实战项目(有图文代码)

《精选20个好玩又实用的的Python实战项目(有图文代码)》文章介绍了20个实用Python项目,涵盖游戏开发、工具应用、图像处理、机器学习等,使用Tkinter、PIL、OpenCV、Kivy等库... 目录① 猜字游戏② 闹钟③ 骰子模拟器④ 二维码⑤ 语言检测⑥ 加密和解密⑦ URL缩短⑧ 音乐播放

python panda库从基础到高级操作分析

《pythonpanda库从基础到高级操作分析》本文介绍了Pandas库的核心功能,包括处理结构化数据的Series和DataFrame数据结构,数据读取、清洗、分组聚合、合并、时间序列分析及大数据... 目录1. Pandas 概述2. 基本操作:数据读取与查看3. 索引操作:精准定位数据4. Group

Python pandas库自学超详细教程

《Pythonpandas库自学超详细教程》文章介绍了Pandas库的基本功能、安装方法及核心操作,涵盖数据导入(CSV/Excel等)、数据结构(Series、DataFrame)、数据清洗、转换... 目录一、什么是Pandas库(1)、Pandas 应用(2)、Pandas 功能(3)、数据结构二、安

Python使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我

Python安装Pandas库的两种方法

《Python安装Pandas库的两种方法》本文介绍了三种安装PythonPandas库的方法,通过cmd命令行安装并解决版本冲突,手动下载whl文件安装,更换国内镜像源加速下载,最后建议用pipli... 目录方法一:cmd命令行执行pip install pandas方法二:找到pandas下载库,然后

Python实现网格交易策略的过程

《Python实现网格交易策略的过程》本文讲解Python网格交易策略,利用ccxt获取加密货币数据及backtrader回测,通过设定网格节点,低买高卖获利,适合震荡行情,下面跟我一起看看我们的第一... 网格交易是一种经典的量化交易策略,其核心思想是在价格上下预设多个“网格”,当价格触发特定网格时执行买

Python标准库之数据压缩和存档的应用详解

《Python标准库之数据压缩和存档的应用详解》在数据处理与存储领域,压缩和存档是提升效率的关键技术,Python标准库提供了一套完整的工具链,下面小编就来和大家简单介绍一下吧... 目录一、核心模块架构与设计哲学二、关键模块深度解析1.tarfile:专业级归档工具2.zipfile:跨平台归档首选3.

使用Python构建智能BAT文件生成器的完美解决方案

《使用Python构建智能BAT文件生成器的完美解决方案》这篇文章主要为大家详细介绍了如何使用wxPython构建一个智能的BAT文件生成器,它不仅能够为Python脚本生成启动脚本,还提供了完整的文... 目录引言运行效果图项目背景与需求分析核心需求技术选型核心功能实现1. 数据库设计2. 界面布局设计3

Python进行JSON和Excel文件转换处理指南

《Python进行JSON和Excel文件转换处理指南》在数据交换与系统集成中,JSON与Excel是两种极为常见的数据格式,本文将介绍如何使用Python实现将JSON转换为格式化的Excel文件,... 目录将 jsON 导入为格式化 Excel将 Excel 导出为结构化 JSON处理嵌套 JSON: