Scrapy学习笔记(一)

第一次写,记录一下自己学习Scrapy的心得。

学习Scrapy大致流程

1、Scrapy架构图

#绿线是数据流向#
Scrapy架构图
Scrapy Engine(引擎): 负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等。

Scheduler(调度器): 它负责接受引擎发送过来的Request请求,并按照一定的方式进行整理排列,入队,当引擎需要时,交还给引擎。

Downloader(下载器):负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到的Responses交还给Scrapy Engine(引擎),由引擎交给Spider来处理,

Spider(爬虫):它负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给引擎,再次进入Scheduler(调度器).

Item Pipeline(管道):它负责处理Spider中获取到的Item,并进行进行后期处理(详细分析、过滤、存储等)的地方。

Downloader Middlewares(下载中间件):你可以当作是一个可以自定义扩展下载功能的组件。

Spider Middlewares(Spider中间件):你可以理解为是一个可以自定扩展和操作引擎和Spider中间通信的功能组件(比如进入Spider的Responses;和从Spider出去的Requests)

2、Scrapy爬虫大概分为4步

1、新建项目

scrapy startproject xxxx

例如:在cmd里输入scrapy startproject demo,就会在E:\Scrapy目录下建立一个demo文件夹
在这里插入图片描述
在这里插入图片描述
2、明确目标
编写 items.py
在这里插入图片描述
Item 定义结构化数据字段,用来保存爬取到的数据
例如:我们能要爬取豆瓣Top250的电影的一些信息
然后我们可以这么写items.py

import scrapy

class DemoItem(scrapy.Item):
    # define the fields for your item here like:
    # name = scrapy.Field()
    
    #排名
    ranking=scrapy.Field()
    
    #电影名称
    movie_name=scrapy.Field()
    
    #评分
    score=scrapy.Field()
    
    #评论人数
    score_num=scrapy.Field()

3、制作爬虫
在 spiders 目录下新建 demospider.py 文件

from scrapy.spiders import Spider
from douban.items import DemoItem
from scrapy import Request

class DoubanMoiveTop250Spider(Spider):
    name = 'douban_movie_top250'
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36', }

    def start_requests(self):
        url = 'https://movie.douban.com/top250'
        yield Request(url, headers=self.headers)

    def parse(self, response):
        item = DemoItem()
        movies = response.xpath('//ol[@class="grid_view"]/li')
        for movie in movies:
            item['ranking'] = movie.xpath('.//div[@class="pic"]/em/text()').extract()[0]
            item['movie_name'] = movie.xpath('.//div[@class="hd"]/a/span[1]/text()').extract()[0]
            item['score'] = movie.xpath('.//div[@class="star"]/span[@class="rating_num"]/text()').extract()[0]
            item['score_num'] = movie.xpath(
                './/div[@class="star"]/span[4]/text()').extract()[0]
            yield item
        next_url = response.xpath('//span[@class="next"]/a/@href').extract()
        if next_url:
            next_url = 'https://movie.douban.com/top250' + next_url[0]
            yield Request(next_url, headers=self.headers)

爬虫大概也分为4步

  1. 导包
  2. 写爬虫类(默认继承Spider类)
  3. start_request
  4. parse

4、存储内容
更改 pipelines.py 的内容,设计管道存储爬取内容

最后在spiders目录下创建 run.py 文件

import scrapy.cmdline
scrapy.cmdline.execute('scrapy crawl douban_movie_top250 -o douban.csv'.split())

运行run.py 会得到douban.csv文件
douban.csv

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值