Scrapy爬虫框架基本介绍

本文介绍了Scrapy网络爬虫框架的安装、基本概念、与Requests的对比、常用命令及实战案例。Scrapy是一个用于网站级爬虫的高效框架,提供数据流处理和并发性。通过创建项目、爬虫、配置爬虫,实现了将HTML网页内容保存到本地。Scrapy的核心组件包括Spider、ItemPipeline等,其优势在于节省存储空间和灵活响应。实战中展示了如何保存网页内容,并通过`yield`生成器优化爬虫性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Scrapy爬虫框架

到了最专业的网络爬虫框架学习部分,要打起更好的精气神迎接新的挑战。

1、安装

pip install scrapy

安装完毕后输入如下命令来测试效果:

scrapy -h

能够正确回响就说明已经能够安装成功了。

2、Scrapy框架简述

scrapy是一个爬虫框架,是一种能够帮助用户实现专业网络爬虫的一个软件结构、功能组件的集合。

怎么理解呢?其实就可以认为这个框架有几个小组件分工合作,形成数据流,并且组成这么一个大的组件集合。下图展示框架的组成部分:

在这里插入图片描述

在这里,我们要实现一个对爬虫功能的实现,应该是从Spider和Item Pipeline进行入手。因为Engine、Downloader是已有的功能实现,Scheduler也是如此。

此时我们进行爬虫的实质就是在进行爬虫框架配置的完善

3、Requests和Scrapy

相同点:

  • 两者都可以进行网页请求和爬取
  • 可用性好,文档简单
  • 都没有处理js、提交表单和应对验证码的功能

不同点:

requestscrapy
页面级爬虫网站级爬虫
功能库框架
并发考虑不足,效率低并发性好
重点在于页面下载重点在于爬虫结构
定制灵活一般定制灵活
上手简单入门稍难

4、Scrapy常用命令

Scrapy的常用命令格式如下:

scrapy <command> [option] [args]

其中,command主要是常用的命令,包括如下:

命令说明格式
startproject创建一个新爬虫scrapy startproject [dir]
genspider创建一个爬虫scrapy genspider [option]
settings获得爬虫配置信息scrapy settings [options]
crawl运行一个爬虫scrapy crawl
list列出工程所有爬虫scrapy list
shell启动url调试命令行scrapy shell [url]

一个工程就是一个大的框架,其中工程可以放置很多爬虫并相当于作为工程内部的一种downloader。

并且,这种自动化适合脚本操作,并且注重于功能。

5、Scrapy的实例

1、建立一个爬虫的工程:

在这里插入图片描述

文件目录如上图所示。

其中,项目名为python123demo,下一层是部署配置文件config和用户自定义python代码,通常跟工程名一致。

再下一层,我们还有这些python文件,分别对应着5个功能组件中的若干个。

2、创建一个爬虫

在这里插入图片描述

生成的内容如下:

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

    def parse(self, response):
        pass

当然我们也可以手动生成完成爬虫创建的部分。

3、配置爬虫

针对上面创建的爬虫,我们试着做一个将html网页存到一个html文件中。


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('Save file %s.' % name)

其次运行:

scrapy crawl demo

结果如下:

<html><head><title>This is a python demo page</title></head>
<body>
<p class="title"><b>The demo python introduces several python courses.</b></p>
<p class="course">Python is a wonderful general-purpose programming language. You can learn Python from novice to professional by tracking the following courses:
<a href="http://www.icourse163.org/course/BIT-268001" class="py1" id="link1">Basic Python</a> and <a href="http://www.icourse163.org/course/BIT-1001870001" class="py2" id="link2">Advanced Python</a>.</p>
</body></html>

6、yield

是一个生成器,是一个不断产生值的函数,其包含yield语句的函数是一个生成器。

生成器每次产生一个值,函数就被冻结,被唤醒后产生一个新的值。

def gen(n):
	for i in range(n):
		yield i**2

上面的内容功能是产生小于n的数的平方值。因为生成器会返回一个返回值,并且处于一个循环内部。

生成器的优势:

1、能够更好存储空间

2、更灵活的响应

3、使用灵活

总结

以上就是Scrapy的基本概念的介绍,实践部分仍然需要靠自己得经验和积累来完成。谢谢大家的阅读。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Xiao艾扶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值