scrapy案例——豆瓣电影Top250的爬取

项目:豆瓣电影Top250的爬取

案例需求:

1.使用scrapy爬虫技术爬取豆瓣电影Top250的电影数据(包括排名、电影名称、导演、演员、url、评分)

2.实现分页爬取,共十页

3.将爬取下来的数据保存在数据库中

案例分析:

1.找到正确的数据吧,并复制正确的请求url

做好准备:开启管道、关闭君子协议、伪造浏览器

ITEM_PIPELINES = {'doubanbook.pipelines.DoubanbookPipeline': 300,
}

ROBOTSTXT_OBEY = False
USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36'

2.解析数据:如title

    def parse(self, response):# 实例一个容器保存爬取的信息item = DoubanbookItem()# 这部分是爬取部分,使用xpath的方式选择信息,具体方法根据网页结构而定for box in response.xpath('//ol[@class="grid_view"]/li'):item['Rank'] = box.xpath('.//div[@class="pic"]/em/text()').extract()[0]item['Name'] = box.xpath('.//div[@class="info"]/div[1]/a/span[1]/text()').extract()[0].strip().replace("\n","").replace(" ", "")s = box.xpath('.//div[@class="bd"]/p/text()').extract()[0].strip().replace(" ", "")item['Author'] = s.split()[0]if len(s.split()) > 1:item['Actor'] = s.split()[1]item['Score'] = box.xpath('.//div[@class="star"]/span[2]/text()').extract()[0].strip()item['Url'] = box.xpath('.//div[@class="pic"]/a/@href').extract()yield item

items.py中

import scrapyclass DoubanbookItem(scrapy.Item):# define the fields for your item here like:# name = scrapy.Field()Rank = scrapy.Field()Name = scrapy.Field()Author = scrapy.Field()Actor = scrapy.Field()Score = scrapy.Field()Url = scrapy.Field()

3.获取翻页链接 

# 获取下一页的rl信息next_url = response.xpath('//span[@class="next"]/link/@href').extract()if next_url:# 将信息组合成下一页的urlpage = 'https://movie.douban.com/top250' + next_url[0]yield scrapy.Request(page, callback=self.parse)

4.保存至数据库

pipelines.py

from itemadapter import ItemAdapter
import pymysql.cursors
import pymysql
from twisted.enterprise import adbapiclass DoubanbookPipeline(object):def __init__(self):# 打开文件# 连接数据库self.conn = pymysql.connect(host='localhost',port=3306,user='root',passwd='wx990826',db='douban',)self.cur = self.conn.cursor()def process_item(self, item, spider):sqli = "insert into movie(ranks,title,author,actor,score,url) values(%s,%s,%s,%s,%s,%s)"self.cur.execute(sqli, (item['Rank'], item['Name'], item['Author'], item['Actor'], item['Score'],item['Url']))self.conn.commit()return item# 该方法在spider被开启时被调用。

运行项目:

start.py

from scrapy import cmdline
cmdline.execute(['scrapy','crawl','read','--nolog'])

运行结果:

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

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

相关文章

利用由 Search AI 提供支持的自动导入功能加速 Elastic Observability 中的日志分析

作者:来自 Elastic Bahubali Shetti 通过自动化自定义数据集成,以创纪录的速度将日志迁移到 AI 驱动的日志分析。 Elastic 正在通过自动提取自定义日志来加速采用 AI 驱动的日志分析(AI-driven log analytics),随着基…

Java程序设计:spring boot(2)

目录 1 Spring MVC 零配置创建与部署 1.1 创建Spring MVC Web⼯程 1.2 pom.xml 添加坐标相关配置 1.3 添加源代码 1.4 添加视图 1.5 SpringMVC 配置类添加 1.6 入口文件代码添加 1.7 部署与测试 2 Spring Boot 概念&特点 2.1 框架概念 2.2 框架特点 2.3 Spring…

作业2-线性回归的Matlab代码实现

一、前言 相关配置:Matlab 2020a(版本的影响应该不大,.m代码基本都能运行,个人感觉就是Simulink对版本的要求高一些) 二、任务描述 基于近两节课的理论推导,用代码实现线性回归,并对预测结果进…

【vue】vue-router_ vue3路由管理器

代码获取 vue-router_ vue3路由管理器 ⼀、基本介绍 1. 单⻚应⽤程序介绍 1.1 概念 单⻚应⽤程序:SPA(Single Page Application)是指所有的功能都在⼀个HTML⻚⾯上实现 1.2 具体⽰例 单⻚应⽤⽹站: ⽹易云⾳乐 https://music.163.com/ 多⻚应⽤⽹…

linux环境下C程序的编译过程以及makefile的简单使用

在windows下,很多用来进行编程软件对于写好的文件,点击编译即可生成想要文件。如.exe可执行文件,.hex文件或者.bin文件等等。软件为我们省略了很多事。但是对于linux初学者来说,初次接触linux系统,面对命令行黑框框有点…

git-合并连续两次提交(一个功能,备注相同)

前言: 场景是这样,由于我是实现一个功能,先进行了一次commit,然后我发现写的有些小问题,优化了一下功能并且把代码优化了一次,于是又提交了一次。两次的提交都是以相同的备注(当然这个无所谓)&a…

智能时代摩托车一键启动无钥匙进入感受科技前线

向智能化与高性能迈进,技术创新与绿色转型引领摩托车行业智能化出行。 摩托车一键启动无钥匙进入功能是一种先进的车辆控制系统,它允许驾驶员在不使用传统机械钥匙的情况下,通过智能感应技术自动解锁和启动摩托车。这种系统通常包括一个智能钥匙&#x…

【前端】如何制作一个自己的网站(11)

接上文。 除了前面的颜色样式外,字体样式和文本样式也是网页设计中的重要组成部分。 合适的字体和文本排版,不仅可以使页面更加美观,也可以提升用户体验。接下来,我们先来看看CSS如何设置字体样式。 字体样式 同时设置了字体样…

Python SQL 注入攻击及其防护措施:编写安全的数据库查询

Python SQL 注入攻击及其防护措施:编写安全的数据库查询 SQL 注入(SQL Injection)是一种常见且危险的安全漏洞,攻击者通过操纵应用程序的数据库查询输入,执行未经授权的操作,可能会导致数据库数据泄露、篡…

闯关leetcode——136. Single Number

大纲 题目地址内容 解题代码地址 题目 地址 内容 Given a non-empty array of integers nums, every element appears twice except for one. Find that single one. You must implement a solution with a linear runtime complexity and use only constant extra space. …

leetcode30:串联所有单词的字串

给定一个字符串 s 和一个字符串数组 words。 words 中所有字符串 长度相同。 s 中的 串联子串 是指一个包含 words 中所有字符串以任意顺序排列连接起来的子串。 例如,如果 words ["ab","cd","ef"], 那么 "abcdef…

thinkpad E14 GEN5 加内存

1、正面 2、背面 3、角落 松掉所有螺丝后,用塑料撬片沿着角落开始撬。把所有的卡口都撬开就可以了。 4、内存盖子 取下背板,就看到内存区域了。上面覆盖了一个散热金属盖子。 拿掉金属盖子。 5、内存卡口 我的这代笔记本是板载16G DDR4 3200内存&…

Java 类和对象详解(下)

个人主页:鲤鱼王打挺-CSDN博客 目录 💗前言: 💯一.static关键字 1. 为什么要使用static 2. static 修饰成员变量: 3. static 修饰成员方法: ​编辑 4. 静态代码块 5.静态导入包 💯二.…

C++进阶——set和map

目录 前言 一、set 1.set的基本介绍 2.set的使用 2.1构造与迭代器 2.2插入 2.3删除 2.4查找 2.5获取需要的区间 2.6一些使用示例 3.set和multiset的区别 4.set相关oj题目 二、map 1.map的基本介绍 2.map的使用 2.1构造与迭代器 2.2增删查以及获取区间 2.3数据…

【C语言】strtok、strerror函数

1、strtok函数使用 注意:使用strtok时包含头文件:string.h strtok函数原型: char* strtok(char* str, const char* sep); (1)sep参数指向一个字符串,定义了用作分隔符的字符集合。 &#x…

xlsx xlsx-style-vite 实现前端根据element 表格导出excel且定制化样式 背景 列宽等

前言 先看下最终效果图吧,需要的可以参考我的实现方式 这是最终导出的表格文件 类似这种的,特定单元格需要额外标注,表头也有月份然后细分的,表格组件是这样的 注意 别使用xlsx-style 这个库,太多问题了,…

优阅达携手 Theobald 亮相新加坡科技周,助力企业 SAP 数据集成与应用

针对不同用户需求量身定制解决方案,帮助企业轻松应对从数据提取到分析、从开发到流程管理的 SAP 数据挑战。 上周,2024 新加坡科技周在滨海湾金沙会议展览中心圆满落幕。在为期两天的活动中,七大专题展览同时进行,超过 2,000 家…

【Router】路由器中NAT、NAPT、NPT是什么?

参考链接 NAT vs. NAPT: What’s the Difference? IPv6 Network Prefix Translation (NPt) | pfSense Documentation (netgate.com) 趣谈NAT/NAPT的原理,这篇不可不读! - 知乎 (zhihu.com) NAT (Network Address Translation) NAT说明 NAT&#x…

Java | Leetcode Java题解之第486题预测赢家

题目&#xff1a; 题解&#xff1a; class Solution {public boolean PredictTheWinner(int[] nums) {int length nums.length;int[] dp new int[length];for (int i 0; i < length; i) {dp[i] nums[i];}for (int i length - 2; i > 0; i--) {for (int j i 1; j …

SQL Server 2019数据库“正常,已自动关闭”

现象&#xff1a; SQL Server 2019中&#xff0c;某个数据库在SQL Server Management Studio&#xff08;SSMS&#xff09;中的状态显示为“正常&#xff0c;已自动关闭”。 解释&#xff1a; 如此显示&#xff0c;是由于该数据库的AUTO_ CLOSE选项被设为True。 在微软的官…