• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Scrapy框架丨Python爬虫基础入门系列(4)

武飞扬头像
互联网阿星
帮助1

提示:文末有福利!最新Python爬虫资料/学习指南>>戳我直达


前言

Scrapy框架简述
Scrapy 是一个为了抓取网页数据、提取结构性数据而编写的应用框架,该框架是封装的,包含 request (异步调度和处理)、下载器(多线程的 Downloader)、解析器(selector)和 twisted(异步处理)等。对于网站的内容爬取,其速度非常快捷。


话不多说,开始学习
学新通

Scrapy框架

Scrapy库安装

打开cmd输入pip install scrapy

2、Scrapy爬虫框架结构

5 2结构、数据流

学新通

3、Scarpy爬虫框架解析

ENGINE:

控制所有模块之间的数据流。

根据条件触发事件。

不需要用户修改。

DOWNLOADER:

根据请求下载网页。

不需要修改。

SCHEDULER:

对所有爬取请求进行调度管理。

不需要用户修改

DOWNLOADER MIDDLEWARE

downloader和engine两个模块之间的中间键。

目的:实施Engine、Scheduler和Downloader之间进行用户可配置的控制。

功能:修改、丢弃、新增请求或响应。

用户可以编写代码修改。

Spider:

解析Downloader返回的响应(Response)。

产生爬取项(scraped item)。

产生额外的爬取请求(Request)。

需要用户编写配置代码。

Item Pipelines:

以流水线方式处理Spider产生的爬取项。

由一组操作顺序组成,类似流水线,每个操作是一个Item Pipeline类型。

可能操作包括:清理、检验和查重爬取项中的HTML数据、将数据存储到数据库。

需要用户编写配置代码。

Spider Middleware

Spider和Engine之间的中间键。

目的:对请求和爬取项的再处理。

功能:修改、丢弃、新增请求或爬取项。

用户可以编写配置代码。

4、Scrapy爬虫的常用命令

Scrapy命令行(cmd)

startproject

创建一个新工程。

scrapy startproject[dir]

genspider

创建一个爬虫。

scrapy genspider[options]

settings

获得爬虫配置信息。

scrapy settings[options]

crawl

运行一个爬虫。

scrapy crawl

list

列出工程中所有爬虫。

scrapy list

shell

启动url调试命令行。

scrapy shell[url]

操作步骤

1、建立一个Scrapy爬虫工程

①、打开命令行,切换到自己希望存储的目录。

②、输入scrapy startproject 文件名。

③、生成工程目录

文件夹:外层目录

scrapy.cfg:部署scrapy爬虫的配置文件。
文件夹:scrapy框架的用户自定义python代码。

_init_.py:初始化脚本

item.py:Items代码模板(继承类)

middlewares.py:Middlewares代码模板(继承类)

pipelines.py:pipelines代码模板(继承类)

settings.py:scrapy爬虫的配置文件

spiders/:spiders代码模板目录(继承类)

_init_.py:初始文件,无需修改。

_pycache_/:缓存目录,无需修改。
学新通

2、在工程中产生一个Scrapy爬虫

命令行中输入scrapy genspider 文件名 爬取网站网址

3、配置产生的spider爬虫

#例子import scrapyclass 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.' % name)
        pass

4、运行爬虫,获取网页

5、yield关键词使用

yeild<–>生成器

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

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

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

实例

生成器写法

def gen(n):
    for j in range(n):
        yield j**2
    # 产生所有小于n的数的平方值,运行到yield这一行时,运算i**2的值并返回,然后函数被冻结。for i in gen(5):
    print(i, " ", end="") 
    # >>>输出结果:0  1  4  9  16
    # 这块儿只可意会不可言传,大概解释一下就是,进入主函数的for循环的时候,先运行gen(5),此时进入gen函数,第一次走gen里的循环,j=0,经过yield,返回0给i,此时i为0。第一次i循环结束。走第二次,再次调用gen,此时gen里的j=1,重复上述。按我的说法就是,yield是一个有记录状态功能的return。

6、Scrapy爬虫的基本使用

Scrapy爬虫的使用步骤:

1、创建一个工程和Spider模板

2、编写Spider

3、编写Item Pipeline

4、优化配置策略

Scrapy爬虫的数据类型:

Request类

class scrapy.http.Request()

Request对象表示一个HTTP请求。

由Spider生成,由Downloader执行。

属性或方法:

.url:Request对应的请求URL地址。

.method:对应的请求方法,'GET''POST'等。

.headers:字典类型风格的请求头。

.body:请求内容主体,字符串类型。

.meta:用户添加的扩展信息,在Scrapy内部模块间传递信息使用。

.copy():复制该请求。

Response类

class scrapy.http.Response()

Response对象表示一个HTTP响应。

由Downloader生成,由Spider处理。

属性或方法:

.url:Response对应的url地址。

.status:HTTP状态码,200、404、403……

.headers:Response对应的头部信息。

.body:Response对应的内容信息,字符串类型。

.flags:一组标记。

.request:产生Response类型对应的Request对象。

.copy():复制该响应。

Item类

class scrapy.item.Item()

Item对象表示一个从HTML页面中提取的信息内容。

由Spider生成,由Item Pipeline处理。

Item类似字典类型,可以按照字典类型操作。

Scrapy爬虫支持的HTML信息提取方法

Beautiful Soup

lxml

re

XPath Selector

CSS Selector

使用格式:.css(‘a::attr(href)’).extract()

其中,a为标签名称,href是标签属性。


学新通


总结

关于更多Scrapy框架的知识,大家可以参考Scrapy框架中文官方文档《Scrapy 中文手册 0.25 文档》

Python爬虫基础入门系列(4)就到这,希望大家早日修炼成为爬虫大佬!当然,如果你准备系统地学爬虫及更多Python编程技术,可戳我文末的名片,Free领取最新Python爬虫资料/免费咨询/学习规划~

戳我名片 · 领取福利

学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhfigkhk
系列文章
更多 icon
同类精品
更多 icon
继续加载