scrapy爬虫基本使用

作者: Cache_wood | 来源:发表于2021-10-02 00:48 被阅读0次

@[toc]

产生步骤1

应用scrapy爬虫框架主要是编写配置型代码

scrapy startproject python123demo

产生步骤2

在工程中产生一个scrapy爬虫
进入工程目录,然后执行如下命令

scrapy genspider demo python123.io

该命令作用:

  1. 生成一个名称为demo的spider
  2. 在spider目录下增加代码文件demo.py
#demo.py
import scrapy

class DemoSpider(scrapy.Spider):
    name = 'demo'
    allowed_domains = ['python123.io']
    start_urls = ['http://python123.io/']

    def parse(self, response):
        pass

parse()用于处理响应,解析内容形成字典,发现新的URL爬取请求

产生步骤3

配置产生的spider爬虫

  1. 初始化URL地址
  2. 获取页面后的解析方式
import scrapy


class DemoSpider(scrapy.Spider):
    name = 'demo'
    allowed_domains = ['python123.io']
    start_urls = ['http://python123.io/ws/demo.html']

    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

运行爬虫,获取网页

scrapy crawl demo

demo爬虫被执行,捕获页面存储在demo.html

#demo.py完整版本
import scrapy
from scrapy.http.request import Request

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

    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)

yield关键字

包含yield语句的函数是一个生成器

生成器每次产生一个值(yield语句),函数被冻结,被唤醒后再产生一个值。

生成器是一个不断产生值的函数

def gen(n):
    for i in range(n):
        yield i**2
for i in gen(5):
    print(i," ",end="")

0  1  4  9  16  

生成器相比一次列出所有内容的优势:

  1. 更节省存储空间
  2. 响应更迅速
  3. 使用更灵活

scrapy爬虫的使用步骤

  • 步骤1:创建一个工程和spider模板
  • 步骤2:编写spider
  • 步骤3:编写Item Pipeline
  • 步骤4:优化配置策略

scrapy爬虫的数据类型

Request类
class scrapy.http.Request()

Request对象表示一个HTTP请求
由Spider生成,由Downloader执行

Request类
属性或方法 说明
.url Request对应的请求URL地址
.method 对应的请求方法,'GET','POST'等
.headers 字典类型风格的请求头
.body 请求内容主体,字符串类型
.meta 用户添加的扩展信息,在scrapy内部模块间传递信息使用
.copy() 复制该请求
Response类
class scrapy.http.Response()

Response对象表示一个HTTP响应
由Downloader生成,由Spider处理

Response类型
属性或方法 说明
.url Response对应的URL地址
.status HTTP状态码,默认是200
.headers Response对应的头部信息
.body Response对应的内容信息,字符串类型
.flags 一组标记
.request 产生Response类型对应的Response对象
.copy() 复制该响应
Item类
class scrapy.item.Item()

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

scrapy爬虫提取信息的方法

  • Beautiful Soup
  • lxml
  • re
  • XPath Selector
  • CSS Selector

CSS Selector的基本使用

<HTML>.css('a::attr(href)').extract()

相关文章

  • scrapy爬虫基本使用

    @[toc] 产生步骤1 应用scrapy爬虫框架主要是编写配置型代码 产生步骤2 在工程中产生一个scrapy爬...

  • mm131爬虫(scrapy)

    Scrapy 基本使用 1. Install 2. 新建爬虫项目 3. 新建爬虫,在 spiders 目录下创建(...

  • 09-Scrapy基础

    一. Scrapy 框架介绍 Scrapy架构图 安装Scrapy 二. 使用Scrapy 使用爬虫可以遵循以下步...

  • Scrapy学习笔记

    学习 初步使用 基本使用 scrapy 问题记录: 运行爬虫出现 500 错误:解决办法:设置 settings....

  • 如何获取指定模块下所有的类

    前言 在使用 scrapy 时,运行爬虫仅需要通过 scrapy crawl 爬虫名 就可启动我们写好的爬虫,那么...

  • python爬虫框架scrapy

    爬虫框架Scrapy(四) 使用框架Scrapy开发一个爬虫只需要四步:创建项目:scrapy startproj...

  • python爬虫框架Scrapy

    爬虫框架Scrapy(二) 使用框架Scrapy开发一个爬虫只需要四步:创建项目:scrapy startproj...

  • python爬虫框架Scrapy

    爬虫框架Scrapy(三) 使用框架Scrapy开发一个爬虫只需要四步:创建项目:scrapy startproj...

  • scrapyd

    总结一下scrapyd的基本操作方便自己之后使用.1.修改scrapy爬虫项目的scrapy.cfg文件(项目名称...

  • 小爬虫实践项目-爬取伯乐在线全部文章信息

    新建项目article 安装scrapy 新建scrapy工程Article 使用模板创建爬虫 启动scrapy ...

网友评论

    本文标题:scrapy爬虫基本使用

    本文链接:https://www.haomeiwen.com/subject/qvbcnltx.html