Scrapy爬虫框架笔记(一)

之前一直用requests+BeautifulSoup进行爬虫,想要接触一下Scrapy。

配置环境

首先需要配置环境,按照Scrapy文档给出的需要安装python+lxml+OpenSSL然后才能安装Scrapy。所以按照步骤安装python3.7之后使用pip install依次安装lxml、OpenSSL、Scrapy。
然后命令行进入存储代码的目录中,egH:\python\Scrapy,执行scrapy startproject tutorial。会包含一下文件

tutorial/
    scrapy.cfg
    tutorial/
        __init__.py
        items.py
        pipelines.py
        settings.py
        spiders/
            __init__.py
            ...

分别为

scrapy.cfg: 项目的配置文件
tutorial/: 该项目的python模块。之后您将在此加入代码。
tutorial/items.py: 项目中的item文件.
tutorial/pipelines.py: 项目中的pipelines文件.
tutorial/settings.py: 项目的设置文件.
tutorial/spiders/: 放置spider代码的目录.

定义Item

Item 是保存爬取到的数据的容器;其使用方法和python字典类似。在item.py文件夹里面定义item

import scrapy

class DmozItem(scrapy.Item):#创建一个类,继承scrapy.item类,就是继承人家写好的容器
    title = scrapy.Field()# 需要取哪些内容,就创建哪些容器
    link = scrapy.Field()
    desc = scrapy.Field()

注:容器不一定是一开始全部都定义好的,可以跟随项目的更新一点点向里面添加。

第一个爬虫

在spiders文件夹下创建一个dmoz_spider.py文件。

  • name: 用于区别Spider。 该名字必须是唯一的,您不可以为不同的Spider设定相同的名字。
  • start_urls: 包含了Spider在启动时进行爬取的url列表。 因此,第一个被获取到的页面将是其中之一。 后续的URL则从初始的URL获取到的数据中提取。
  • parse() 是spider的一个方法。 被调用时,每个初始URL完成下载后生成的 Response 对象将会作为唯一的参数传递给该函数。 该方法负责解析返回的数据(response data),提取数据(生成item)以及生成需要进一步处理的URL的 Request 对象。简单来说就是编写爬虫的主要部分。
import scrapy

class DmozSpider(scrapy.spiders.Spider):
    name = "dmoz"# 爬虫的唯一标识,不能重复,启动爬虫的时候要用
    allowed_domains = ["maoyan.com"]# 限定域名,只爬取该域名下的网页
    start_urls = [
        "https://maoyan.com/"# 开始爬取的链接
    ]

    def parse(self, response):
        filename = response.url.split("/")[-2]  # 获取url,用”/”分段,获去倒数第二个字段
        with open(filename, 'wb') as f:
            f.write(response.body)

然后执行scrapy crawl dmoz这个命令启动spider。把访问的得到的网页源码写入文件。
Scrapy为Spider的 start_urls 属性中的每个URL创建了 scrapy.Request 对象,并将 parse 方法作为回调函数(callback)赋值给了Request。
Request对象经过调度,执行生成 scrapy.http.Response 对象并送回给spider parse() 方法。

Scrapy框架的整体架构和组成

在这里插入图片描述
Spiders:爬虫,定义了爬取的逻辑和网页内容的解析规则,主要负责解析响应并生成结果和新的请求
Engine:引擎,处理整个系统的数据流处理,出发事物,框架的核心。
Scheduler:调度器,接受引擎发过来的请求,并将其加入队列中,在引擎再次请求时将请求提供给引擎
Downloader:下载器,下载网页内容,并将下载内容返回给spider
ItemPipeline:项目管道,负责处理spider从网页中抽取的数据,主要是负责清洗,验证和向数据库中存储数据
Downloader Middlewares:下载中间件,是处于Scrapy的Request和Requesponse之间的处理模块
Spider Middlewares:spider中间件,位于引擎和spider之间的框架,主要处理spider输入的响应和输出的结果及新的请求middlewares.py里实现。

Scrapy爬虫框架笔记(二)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值