【爬虫之scrapy框架——尚硅谷(学习笔记two)--爬取电影天堂(基本步骤)】

爬虫之scrapy框架--爬取电影天堂——解释多页爬取函数编写逻辑

    • (1)爬虫文件创建
    • (2)检查网址是否正确
    • (3)检查反爬
      • (3.1) 简写输出语句,检查是否反爬
      • (3.2) 检查结果
    • (4)函数编写和需求分析
      • (4.1)在items中定义数据类型
      • (4.2)分析网站xpath结构
        • (4.2.1)拿到第一页的名字和第二页要请求访问的网址
        • (4.2.2)完整第二页的网址和请求函数编写
        • (4.2.3)完整代码:
    • (5)开启管道
    • (6)管道封装(写入数据)
    • (6)运行爬虫
      • (6.1) 运行结果(ctrl+alt+L----可将数据排版一下)
    • (7)总结:(该案例的作用)

(1)爬虫文件创建

在这里插入图片描述

(2)检查网址是否正确

在这里插入图片描述

(3)检查反爬

(3.1) 简写输出语句,检查是否反爬

在这里插入图片描述

(3.2) 检查结果

scrapy crawl mv

在这里插入图片描述
在这里插入图片描述

(4)函数编写和需求分析

  1. 拿去名字
  2. 拿去图片

(4.1)在items中定义数据类型

在这里插入图片描述

(4.2)分析网站xpath结构

在这里插入图片描述

mv.py中编写函数:

(4.2.1)拿到第一页的名字和第二页要请求访问的网址

在这里插入图片描述

(4.2.2)完整第二页的网址和请求函数编写

在这里插入图片描述

(4.2.3)完整代码:
import scrapy
from scrapy_movie_99.items import ScrapyMovie99Item

class MvSpider(scrapy.Spider):
    name = "mv"
    allowed_domains = ["www.dyttcn.com"]
    # start_urls = ["https://www.dyttcn.com/"]
    start_urls = ["https://www.dyttcn.com/xijupian/list_4_1.html"]

    def parse(self, response):

        #根正则表达式列表
        a_list=response.xpath('//div[@class="co_content8"]//td[2]//a[3]')

        for a in a_list:
            #获取第一页的name,和要点击的链接
            name=a.xpath('./text()').extract_first()
            href=a.xpath('./@href').extract_first()

            #第二页的地址
            url='https://www.dyttcn.com'+href
            #访问第二页地址
            #发起访问
            yield scrapy.Request(url=url,callback=self.parse_second,meta={'name':name})

    def parse_second(self,response):
        src =response.xpath('//div[@id="Zoom"]//div/img/@src').extract_first()
        #print(src)
        #接收到请求的meta参数的值
        name=response.meta['name']

        #封装为数据结构
        #导入数据结构
        movie=ScrapyMovie99Item(src=src,name=name)
        yield movie





(5)开启管道

在这里插入图片描述

(6)管道封装(写入数据)

在这里插入图片描述
代码如下:

# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: https://docs.scrapy.org/en/latest/topics/item-pipeline.html


# useful for handling different item types with a single interface
from itemadapter import ItemAdapter


class ScrapyMovie99Pipeline:
    #打开文件
    def open_spider(self,spider):
        self.fp=open('movie.json','w',encoding='utf-8')

    #文件写入
    def process_item(self, item, spider):

        self.fp.write(str(item))
        return item


    #关闭文件
    def close_spider(self,spider):
        self.fp.close()

(6)运行爬虫

scrapy crawl mv

在这里插入图片描述

(6.1) 运行结果(ctrl+alt+L----可将数据排版一下)

在这里插入图片描述

(7)总结:(该案例的作用)

作用1:解释多页爬取函数编写逻辑
作用2:meta传递数据的使用

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

初识鸿蒙之ArkTS基础

前言 学习一种应用程序开发,需要从这种程序的开发语言开始,比如说Android开发从入门到放弃,肯定是从Java基础或者是Kotlin语言基础开始学习的,IOS程序开发也肯定是从object-c开始学习的。鸿蒙软件开发也不例外,如果做…

二叉树的前序遍历(leetcode)

144. 二叉树的前序遍历 - 力扣(LeetCode) 给你二叉树的根节点 root ,返回它节点值的 前序 遍历。 这道题的启发性真的很强 ,这里必须传入i的指针进去,下一次栈帧i,但回到了上一层i又变回到了原来的i&#…

办公园区建筑科技风效果(html+threejs)

办公楼科技风(Htmlthreejs) 初始化三维场景 function init() {container document.getElementById(container);camera new THREE.PerspectiveCamera(65, window.innerWidth / window.innerHeight, 0.1, 150000000);camera.position.set(550, 600, 690);scene new THREE.Sce…

短视频的拍摄方式有哪些:四川京之华锦信息技术公司

创意与技术并存的艺术之旅 在数字媒体高速发展的今天,短视频已经成为人们获取信息、表达情感、展示才艺的重要窗口。从社交平台到新闻资讯,再到教育娱乐,短视频无处不在,其独特的魅力和广泛的传播力让人们对它的拍摄方式产生了浓…

应急响应-Windows-挖矿病毒

随着虚拟货币市场的繁荣,挖矿病毒已成为网络安全领域一大挑战。该类病毒利用计算机资源进行加密货币的挖掘,给个人用户和企业网络带来了严重的安全风险。本文将针对挖矿病毒的应急响应和防范措施进行分析和总结。 一.判断挖矿病毒 服务器突然发现CPU资…

CTF例题:[SWPU2019]Web1(无列名注入)

网址:BUUCTF在线评测 搜索web1 启动靶机 点击链接进入题目 进入题目后发现有登录和注册接口,直接注册登录。 首先通过1进行测试,查看是否有注入点 出现报错,说明可能存在注入点 然后继续测试发现该服务器过滤了: or、…

Android 逆向

一、apk 查壳工具 ApkScan-PKID 相关APK文件可以在 豌豆荚 官网下载 ApkScan-PKID查壳工具 下载 - 简书 (jianshu.com) 二、脱壳工具:frida 1、Android端配置 frida-server: 该步骤需要使用到 adb,操作Android文件 Releases frida/frid…

前端已死? Bootstrap--CSS组件

目录 Bootstrap 下载 Bootstrap--全局CSS样式 栅格系统 栅格参数 正常显示 实例 代码演示: 排版 代码演示 表格 代码演示 表单 代码演示 等等...(文档很清晰了) Bootstrap--组件 结合演示:(页面) Bootstrap Bootstrap v3 中文文档 Bootstrap 是最受欢迎的 HT…

ubuntu18.04 运行ur5机械臂

视觉抓取初探索1-UR5机械臂抓取仿真 - 知乎 抓取不止!Ubuntu 18.04下UR5机械臂搭建Gazebo环境|开源分享_哔哩哔哩_bilibili 源码地址:GitHub - Geo-JTao/UR5_gripper_camera_gazebo: 在Ubantu18.04中搭建Gazebo仿真环境 遇到问题&#xff1…

Volatile解决内存不可见性

一、多线程下变量的不可见性 在多线程并发执行下,多个线程修改共享的成员变量,会出现一个线程修改了共享变量的值后,另一个线程不能直接 看到该线程修改后的变量的最新值。 我们首先让子线程去更改变量flag的值为true,主线程通过判断后执行。…

运维别卷系列 - 云原生监控平台 之 04.prometheus 查询语句 promql 实践

文章目录 [toc]PromQL 简介什么是时间序列 PromQL 数据类型即时向量 Instant vector范围向量 Range vectorTime DurationsOffset modifier modifier 浮点值 Scalar字符串 String PromQL FUNCTIONSfloor()irate()rate()round()sort()sort_desc() PromQL 运算符算术运算符比较运算…

C语言中的循环队列与栈、队列之间的转换实现

引言 在数据结构的学习中,栈(Stack)和队列(Queue)是两个非常重要的概念。它们分别遵循着后进先出(LIFO)和先进先出(FIFO)的原则。在某些情况下,我们可能需要…

用友NC printBill 任意文件读取/删除漏洞复现(XVE-2024-10609)

0x01 产品简介 用友NC是一款企业级ERP软件。作为一种信息化管理工具,用友NC提供了一系列业务管理模块,包括财务会计、采购管理、销售管理、物料管理、生产计划和人力资源管理等,帮助企业实现数字化转型和高效管理。 0x02 漏洞概述 用友NC printBill 接口处存在任意文件读…

PDF编辑阅读器PDF Expert for Mac v3.10.1中文激活版

PDF Expert for Mac是一款易于使用的 PDF 编辑器和注释器,专为 Mac 设备设计。它允许用户轻松查看、编辑、签名、注释和共享 PDF。该软件使用户能够向他们的 PDF 添加文本、图像、链接和形状,突出显示和标记文本,填写表格以及签署数字文档。它…

02-结构型设计模式(共7种)

1. Adapter(适配器模式) 适配器模式是一种结构型设计模式,它允许将一个类的接口转换成客户端所期望的另一个接口。这种模式通常用于解决接口不兼容的情况,使得原本由于接口不匹配而无法工作的类可以一起工作。 在 C 中,适配器模式可以通过类适…

数学建模——线性回归模型

目录 1.线性回归模型的具体步骤和要点: 1.收集数据: 2.探索性数据分析: 3.选择模型: 4.拟合模型: 5.评估模型: 1.R平方(R-squared): 2.调整R平方(Ad…

Windows11系统配置WSL2网络使它支持LAN访问

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、WSL2安装二、使用步骤1.NAT2.镜像 三、写在最后总结 前言 WSL2的出现感觉真的是一个惊喜,又想玩Linux,又怕日用搞不了的最佳替代方…

TreeMap详解:Java 有序 Map 原理与实现

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一…

[初学者必看]JavaScript 简单实际案例练习,锻炼代码逻辑思维

文章目录 创意小项目合集:从简易图片轮播到购物车1. 图片轮播器2. 动态列表3. 模态框(Modal)4. 简单的表单验证5. 简易待办事项列表(Todo List)6. 简易图片画廊7. 简易时钟8. 简易搜索框高亮9. 简易颜色选择器10. 简易…

【知识碎片】2024_05_14

本篇记录了两道关于位运算的选择题,和一道有点思维的代码题。 C语言碎片知识 求函数返回值,传入 -1 ,则在64位机器上函数返回( ) int func(int x) {int count 0;while (x){count;x x&(x - 1);//与运算} return c…