Scrapy爬虫框架初探

(七)Scrapy爬虫的基本使用

(1)Scrapy爬虫的使用步骤

步骤1:创建一个工程和Spider模板

步骤2:编写Spider

步骤3:编写Item Pipeline

步骤4:优化配置策略

(2)Scrapy爬虫的数据类型

1.Request类

class scrapy.http.Request()
#Requests对象表示一个HTTP请求
#由Spider生成,由Downloader执行
属性或方法说明
.urlRequest对应的请求URL地址
.method对应的请求方法,‘GET’ 'POST’等
.headers字典类型风格的请求头
.body请求内容主体,字符串类型
.meta用户添加的扩展信息,在Scrapy内部模块间传递信息使用
.copy()复制该请求

2.Response类

class scrapy.http.Response()
#Response对象表示一个HTTP响应
#由Downloader生成,由Spider处理
属性或方法说明
.urlResponse对应的URL地址
.statusHTTP状态码,默认是200
.headersResponse对应的头部信息
.bodyResponse对应的内容信息,字符串类型
.flags一组标记
.request产生Response类型对应的Request对象
.copy()复制该响应

3.Item类

class scrapy.item.Item()
#Item对象表示一个从HTML页面中提取的信息内容
#由Spider生成,由Item Pipeline处理
#Item类似字典类型,可以按照字典类型操作

(3)Scrapy测试工程示例

在这里插入图片描述

>产生步骤(1)

  • 建立一个Scrapy工程
  • 选取一个目录(D:\scrapytest),然后执行如下命令:
    在这里插入图片描述
  • 生成的工程目录
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述

>产生步骤(2)

  • 在工程中产生一个Scrapy爬虫

  • 进入工程目录(D:\scrapytest\python123demo),然后执行如下命令:
    在这里插入图片描述

  • 该命令的作用:

    • 生成一个名称为demo的spider

    • 在spiders目录下增加代码文件demo.py

    • 该命令仅用于生成demo.py,该文件也可以手工生成

>产生步骤(3)

  • 配置产生的spider爬虫
    1. 初始化URL地址
    2. 获取页面后的解析方式
# -*- coding: utf-8 -*-
import scrapy


class DemoSpider(scrapy.Spider):
    name = 'demo'
    # allowed_domains = ['python123.io']
    def start_requests(self):
        urls = ['http://python123.io/ws/demo.html']
        for url in urls:
            yield scrapy.Request(url=url, callback=self.parse)

    #parse()用于处理响应,解析内容形成字典,发现新的URL爬取请求
    def parse(self, response):
        fname = response.url.split('/')[-1]
        with open(fname, 'wb') as f:
            f.write(response.body)
        self.log('Saved file %s.' % fname)

>产生步骤(4)

  • 运行爬虫,获取网页

  • 在命令行执行如下命令:
    在这里插入图片描述

  • demo爬虫被执行,捕获页面存储在demo.html
    在这里插入图片描述

(4)yield关键字

  • 包含yield语句的函数式一个生成器
  • 生成器每次产生一个值(yield语句),函数被冻结,被唤醒后再产生一个值
  • 生成器是一个不断产生值的函数
    在这里插入图片描述
  • 生成器相比一次列出所有内容的优势:
    1. 更节省存储空间
    2. 响应更迅速
    3. 使用更灵活

(5)Scrapy爬虫提取信息的方法

  • Scrapy爬虫支持多种HTML信息提取方法:
    • Beautiful Soup
    • lxml
    • re
    • Xpath Selector
    • CSS Selector
<HTML>.css('a::attr(href)').extract()
#a		:标签名称
#href	:标签属性
#CSS Selector由W3C组织维护并规范
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值