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

(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传递数据的使用

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
以下是爬取图书网的实验步骤: 1. 创建 Scrapy 项目 使用命令行工具创建一个新的 Scrapy 项目,例如: ``` scrapy startproject books_crawler ``` 2. 定义 Item 在 `items.py` 文件中定义我们要爬取的数据模型,例如: ```python import scrapy class Book(scrapy.Item): title = scrapy.Field() author = scrapy.Field() price = scrapy.Field() description = scrapy.Field() ``` 3. 定义 Spider 在 `spiders` 目录下创建一个新的 Spider,例如: ```python import scrapy from books_crawler.items import Book class BooksSpider(scrapy.Spider): name = 'books' allowed_domains = ['example.com'] start_urls = ['http://example.com/books/'] def parse(self, response): books = response.css('div.book') for book in books: item = Book() item['title'] = book.css('h2.title::text').get() item['author'] = book.css('p.author::text').get() item['price'] = book.css('p.price::text').get() item['description'] = book.css('p.description::text').get() yield item ``` 在 Spider 中,我们首先定义了 Spider 的名称、允许的域名和起始 URL。然后在 `parse` 方法中,使用 CSS Selector 提取书籍数据,并将其存储为 Item 对象。最后,使用 `yield` 关键字将 Item 对象传递给 Scrapy 引擎。 4. 配置 Pipeline 在 `settings.py` 文件中配置 Scrapy Pipeline,例如: ```python ITEM_PIPELINES = { 'books_crawler.pipelines.BooksCrawlerPipeline': 300, } FEED_FORMAT = 'csv' FEED_URI = 'books.csv' ``` 我们将数据存储在一个 CSV 文件中,因此需要将 `FEED_FORMAT` 设置为 `csv`,并指定 CSV 文件的路径。同时,将 `ITEM_PIPELINES` 设置为一个字典,其中包含我们定义的 Pipeline 类和优先级。 5. 定义 Pipeline 在 `pipelines.py` 文件中定义 Scrapy Pipeline,例如: ```python import csv class BooksCrawlerPipeline: def __init__(self): self.file = open('books.csv', 'w', newline='') self.writer = csv.writer(self.file) self.writer.writerow(['Title', 'Author', 'Price', 'Description']) def process_item(self, item, spider): self.writer.writerow([item['title'], item['author'], item['price'], item['description']]) return item def close_spider(self, spider): self.file.close() ``` 在 Pipeline 中,我们首先定义了一个 CSV 文件,并创建了一个 CSV writer 对象。然后,在 `process_item` 方法中,将每个 Item 对象写入 CSV 文件。最后,在 `close_spider` 方法中,关闭 CSV 文件。 6. 运行 Spider 使用如下命令启动爬虫: ``` scrapy crawl books ``` 如果一切正常,Scrapy 将开始爬取图书网,并将提取的数据存储在 `books.csv` 文件中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喜欢下雨t

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值