基于Python Scrapy的豆瓣Top250电影爬虫程序

Scrapy安装

Python实现一个简单的爬虫程序(爬取图片)_python简单扒图脚本-CSDN博客

创建爬虫项目

创建爬虫项目:

scrapy startproject test_spider

创建爬虫程序文件:

>cd test_spider\test_spider\spiders
>scrapy genspider doubanSpider movie.douban.com

编写爬虫程序

分析网址:

https://movie.douban.com/top250?start=25&filter=

其中,start=25是分页信息,一共有10页,每页25个电影记录,start数值为0、25、50……225。

for i in range(0,24,25):req = "https://movie.douban.com/top250?start={}&filter=".format(i)yield scrapy.Request(url=req, meta={'url': req}, headers=self.headers,callback=self.parse)time.sleep(2) 

提取电影网址、中文名、外文名:

html_data = response.body
sp = BeautifulSoup(html_data, 'html.parser')
list = sp.find(class_='grid_view').find_all('li')
for one in list:link = one.find(class_='info').find(class_='hd').find('a')['href']print(link)titles =  one.find_all(class_='title')title_zh =titles[0].text.strip().replace(',',' ')title_en = ''if len(titles)>1:title_en = titles[1].text.strip().replace(',',' ').lstrip('/')print(title_zh,title_en)

提取导演、演员信息:

bd = one.find(class_='info').find(class_='bd')
p1 = bd.find_all('p')[0].text.strip().replace('\n','').replace('\r','').replace(',',' ')
print(p1)

提取评分信息:

spans = bd.find(class_='star').find_all('span')
score = spans[1].text
num = spans[3].text.replace('人评价','')
print(score,num)

写入csv文件:

with open('movies.csv','a+',encoding='utf-8') as f:f.write('网址,中文名,外文名,导演,评分,评价人数\n')with open('movies.csv','a+',encoding='utf-8') as f:f.write('{},{},{},{},{},{}\n'.format(link,title_zh,title_en,p1,score,num))

完整代码:

import scrapy
from bs4 import BeautifulSoup
import timeclass DoubanspiderSpider(scrapy.Spider):name = "doubanSpider"allowed_domains = ["movie.douban.com"]start_urls = ["https://movie.douban.com"]headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36','Cookie': ''}def start_requests(self):   with open('movies.csv','a+',encoding='utf-8') as f:f.write('网址,中文名,外文名,导演,评分,评价人数\n')for i in range(0,24,25):req = "https://movie.douban.com/top250?start={}&filter=".format(i)yield scrapy.Request(url=req, meta={'url': req}, headers=self.headers,callback=self.parse)time.sleep(2) def parse(self, response):print("========= parse ==============")html_data = response.bodysp = BeautifulSoup(html_data, 'html.parser')list = sp.find(class_='grid_view').find_all('li')for one in list:link = one.find(class_='info').find(class_='hd').find('a')['href']print(link)titles =  one.find_all(class_='title')title_zh =titles[0].text.strip().replace(',',' ')title_en = ''if len(titles)>1:title_en = titles[1].text.strip().replace(',',' ').lstrip('/')print(title_zh,title_en)bd = one.find(class_='info').find(class_='bd')p1 = bd.find_all('p')[0].text.strip().replace('\n','').replace('\r','').replace(',',' ')print(p1)spans = bd.find(class_='star').find_all('span')score = spans[1].textnum = spans[3].text.replace('人评价','')print(score,num)with open('movies.csv','a+',encoding='utf-8') as f:f.write('{},{},{},{},{},{}\n'.format(link,title_zh,title_en,p1,score,num))

生成的csv文件如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/64753.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LabVIEW中的“Synchronize with Other Application Instances“

在LabVIEW中,“Synchronize with Other Application Instances”是一个常见的提示或错误,通常出现在尝试并行运行多个LabVIEW实例时,特别是当你打开多个VI或项目时。这个问题可能影响程序的执行流程,导致不同实例之间的数据同步或…

【Linux】AlmaLinux 9.5虚拟机安装过程记录分享

关于AlmaLinux系统感兴趣的,可以去我之前写的另外一篇博客里面看看: https://blog.csdn.net/cnskylee/article/details/143142690 语言,选择【简体中文(中国)】,点击【继续】,进入后续设置 在…

深度学习——现代卷积神经网络(七)

深度卷积神经网络 学习表征 观察图像特征的提取⽅法。在合理地复杂性前提下,特征应该由多个共同学习的神经⽹络层组成,每个层都有可学习的参数。 当年缺少数据和硬件支持 AlexNet AlexNet⽐相对较⼩的LeNet5要深得多。 AlexNet由⼋层组成&#xff1a…

时间管理系统|Java|SSM|JSP|

【技术栈】 1⃣️:架构: B/S、MVC 2⃣️:系统环境:Windowsh/Mac 3⃣️:开发环境:IDEA、JDK1.8、Maven、Mysql5.7 4⃣️:技术栈:Java、Mysql、SSM、Mybatis-Plus、JSP、jquery,html 5⃣️数据库可…

20241217使用M6000显卡在WIN10下跑whisper来识别中英文字幕

20241217使用M6000显卡在WIN10下跑whisper来识别中英文字幕 2024/12/17 17:21 缘起,最近需要识别法国电影《地下铁》的法语字幕,使用 字幕小工具V1.2【whisper套壳/GUI封装了】 无效。 那就是直接使用最原始的whisper来干了。 当你重装WIN10的时候&#…

PostgreSQL技术内幕21:SysLogger日志收集器的工作原理

0.简介 在前面文章中介绍了事务模块用到的事务日志结构和其工作原理,本文将介绍日志的另一个部分,操作日志,主要去描述SysLogger日志的工作原理,流程以及其中关键的实现:日志轮转,刷盘性能问题等&#xff…

GUI07-学工具栏,懂MVC

MVC模式,是天底下编写GUI程序最为经典、实效的一种软件架构模式。当一个人学完菜单栏、开始学习工具栏时,就是他的一生中,最适合开始认识 MVC 模式的好时机之一。这节将安排您学习: Model-View-Controller 模式如何创建工具栏以及…

如何编辑调试gradle,打印日志

在build.gradle.kts中输入 println("testxwg1 ") logger.lifecycle("testxwg2") logger.log(LogLevel.ERROR,"testxwg5") 点刷新就能看到打印日志了

jvm栈帧中的动态链接

“-Xss”这一名称并没有一个特定的“为什么”来解释其命名,它更多是JVM(Java虚拟机)配置参数中的一个约定俗成的标识。在JVM中,有多个配置参数用于调整和优化Java应用程序的性能,这些参数通常以一个短横线“-”开头&am…

怎么将pdf中的某一个提取出来?介绍几种提取PDF中页面的方法

怎么将pdf中的某一个提取出来?传统上,我们可能通过手动截取屏幕或使用PDF阅读器的复制功能来提取信息,但这种方法往往不够精确,且无法保留原文档的排版和格式。此外,很多时候我们需要提取的内容可能涉及多个页面、多个…

TCP常见问题

文章目录 一、两种状态图二、常见问题1、MSL是什么 3、为何等待2MSL3、为何三次握手,不握手、握手一次、两次行吗4、为何四次挥手,三次行吗,两次行吗 一、两种状态图 四次挥手 二、常见问题 1、MSL是什么 MSL是Maximum Segment Lifetime的英…

UG NX二次开发(C#)-机电概念设计-UIStyler中selection块选择信号等对象的过滤器设置

文章目录 1、前言2、创建机电概念设计的模型3、创建UIStyler4、在VS2022中创建NXOPEN CSHAP的工程5、设置信号与信号适配体的过滤器6、测试选择的对象1、前言 在UG NX二次开发过程中,经常会用到UIStyler中的Selection块,即是选择对象,选择对象由于其可以选择多种类型的对象…

线程知识总结(二)

本篇文章以线程同步的相关内容为主。线程的同步机制主要用来解决线程安全问题,主要方式有同步代码块、同步方法等。首先来了解何为线程安全问题。 1、线程安全问题 卖票示例,4 个窗口卖 100 张票: class Ticket implements Runnable {priv…

es 开启slowlog

在 Elasticsearch 中,slowlog(慢日志)是用来记录查询和索引操作的性能数据,帮助你诊断性能瓶颈。你可以为查询 (search slowlog) 和索引 (index slowlog) 配置慢日志。 数据准备 POST /products/_doc/1 {"product_name&quo…

前端yarn工具打包时网络连接问题排查与解决

最近线上前端打包时提示 “There appears to be trouble with your network connection”,以此文档记录下排查过程。 前端打包方式 docker启动临时容器打包,命令如下 docker run --rm -w /app -v pwd:/app alpine-node-common:v16.20-pro sh -c "…

【YOLO 项目实战】(10)YOLO8 环境配置与推理检测

欢迎关注『youcans动手学模型』系列 本专栏内容和资源同步到 GitHub/youcans 【YOLO 项目实战】(1)YOLO5 环境配置与检测 【YOLO 项目实战】(10)YOLO8 环境配置与推理检测 【YOLO5 项目实战】(10)YOLO8 环境…

【蓝桥杯】43699-四平方和

四平方和 题目描述 四平方和定理,又称为拉格朗日定理: 每个正整数都可以表示为至多 4 个正整数的平方和。如果把 0 包括进去,就正好可以表示为 4 个数的平方和。 比如: 502021222 712121222; 对于一个给定的正整数,可…

【5G】5G 无线协议 Radio Protocols(一)

长期演进(LTE)无线电协议主要设计用于通过扁平架构提供PS服务,相比之前的代际,这代表了一个重大改进,它消除了支持电路交换(CS)服务和复杂架构中固有的复杂性。许多原始的LTE原则自第8版以来一直…

VMware ubuntu虚拟机网络配置

首先分清2个情况: 1、在使用笔记本时,WiFi联网使用时,使用的是无线网卡设备上网的。 2、无论是笔记本还是台式机,当接插网线上网时,使用的是以太网卡设备上网的。 以Windows11为例: (1&#x…

Y3编辑器教程7:界面编辑器

文章目录 一、简介1.1 导航栏1.2 画板1.3 场景界面1.4 控件1.4.1 空节点1.4.2 按钮1.4.3 图片1.4.4 模型1.4.5 文本1.4.6 输入框1.4.7 进度条1.4.8 列表 1.5 元件1.5.1 简介1.5.2 差异说明1.5.3 元件实例的覆盖、还原与禁止操作1.5.4 迷雾控件 1.6 属性1.7 事件(动画…