【爬虫之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 ScrapyMovie99Itemclass 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 ItemAdapterclass 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传递数据的使用

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

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

相关文章

TCP的滑动窗口机制和流量控制

目录 滑动窗口 流量控制 拥塞控制 滑动窗口 TCP除了保证可靠性之外,也希望能够尽可能高效的完成数据传输。滑动窗口就是一种提高效率的机制。以下是不引入滑动窗口的数据传输过程: 可以看到,主机A这边每次收到一个ACK才发送下一个数据。这…

NSS【web】刷题

[SWPUCTF 2021 新生赛]jicao 类型&#xff1a;PHP、代码审计、RCE 主要知识点&#xff1a;json_decode()函数 json_decode()&#xff1a;对JSON字符串解码&#xff0c;转换为php变量 用法&#xff1a; <?php $json {"ctf":"web","question"…

【瑞萨RA6M3】2. UART 实验

https://blog.csdn.net/qq_35181236/article/details/132789258 使用 uart9 配置 打印 void hal_entry(void) {/* TODO: add your own code here */fsp_err_t err;uint8_t c;/* 配置串口 */err g_uart9.p_api->open(g_uart9.p_ctrl, g_uart9.p_cfg);while (1){g_uart9.…

使用java.io库序列化Java对象

在我们使用诸如Redis这类缓存系统时&#xff0c;我们往往会存在如下需求&#xff1a;将Java对象保存到Redis缓存中&#xff0c;然后在其他机器上还原回来。 Json方案 我们可以引入Json库等方式&#xff0c;将Java对象序列化为Json字符串来实现这个目的&#xff0c;但是这样的…

iOS——runtime

什么是runtime 我们都知道&#xff0c;将源代码转换为可执行的程序&#xff0c;通常要经过三个步骤&#xff1a;编译、链接、运行。 C 语言 作为一门静态类语言&#xff0c;在编译阶段就已经确定了所有变量的数据类型&#xff0c;同时也确定好了要调用的函数&#xff0c;以及函…

mysql主从热备部署

1、主从复制原理 mysql之间数据复制的基础是二进制日志文件。一台mysql数据库一旦开启用日志文件后&#xff0c;其作为master&#xff0c;它的数据库所有操作都会以事件的方式记录在二进制日志中&#xff0c;其他数据库作为slave通过一个I/O线程与主数据库保持通信&#xff0c;…

OpenAI 发布新款大型语言模型 GPT-4o,带大家了解最新ChatGPT动态。

OpenAI 发布新款大型语言模型 GPT-4o 昨日OpenAI 举办了一场线上活动&#xff0c;正式发布了其最新研发的 AI 模型 GPT-4o&#xff0c;并详细介绍了该模型的强大功能和未来发展规划。此次发布标志着 AI 技术的重大突破&#xff0c;为用户提供了更加便捷、高效的 AI 工具&#…

MySQL创建索引报错 Specified key was too long;max key length is 1000 bytes.

MySQL对创建索引的大小有限制&#xff0c;一般索引键最大长度总和不能超过1000个字节。 问题描述 MySQL创建索引时报错 Specified key was too long;max key length is 1000 bytes. 解决办法 (1) 修改存储引擎 InnoDB的索引字段长度限制大于MyISAM&#xff0c;可以尝试改成…

Pytorch学习-引言

Pytorch相关链接 Pytorch官方网站 https://pytorch.org/ Pytorch的Github仓库 https://github.com/pytorch/pytorch Pytorch论坛 https://discuss.pytorch.org/ Pytorch离线下载包链接 https://download.pytorch.org/whl/torch_stable.html Pytorch学习视频推荐链接 http://【…

记一次跨域问题

线上跨域问题&#xff0c;在自己配置确认没问题下&#xff0c;要及时找运维看看是不是nginx配置问题。 两个方面&#xff1a; 项目代码 nginx配置 SpringBoot 解决跨域问题的 5 种方案&#xff01; SpringBoot解决CORS跨域问题 SpringBoot-实现CORS跨域原理及解决方案

2024 年第一季度全球互联网中断事件

2024 年第一季度伊始&#xff0c;互联网发生了多起中断事件。陆地和海底电缆的损坏在多个地方造成了问题&#xff0c;而与持续中地缘政治冲突相关的军事行动影响了其他地区的连接。 几个非洲国家以及巴基斯坦的政府下令关闭互联网&#xff0c;主要针对移动网络连接。 被称为Ano…