千家信息网

python爬虫利器scrapy怎么使用

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本文小编为大家详细介绍"python爬虫利器scrapy怎么使用",内容详细,步骤清晰,细节处理妥当,希望这篇"python爬虫利器scrapy怎么使用"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢
千家信息网最后更新 2026年11月03日python爬虫利器scrapy怎么使用

本文小编为大家详细介绍"python爬虫利器scrapy怎么使用",内容详细,步骤清晰,细节处理妥当,希望这篇"python爬虫利器scrapy怎么使用"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

架构及简介

Scrapy是用纯Python实现一个为了爬取网站数据、提取结构性数据而编写的应用框架,用途非常广泛。

Scrapy 使用了 Twisted(其主要对手是Tornado)异步网络框架来处理网络通讯,可以加快我们的下载速度,不用自己去实现异步框架,并且包含了各种中间件接口,可以灵活的完成各种需求。

Scrapy Engine(引擎): 负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等。

Scheduler(调度器): 它负责接受引擎发送过来的Request请求,并按照一定的方式进行整理排列,入队,当引擎需要时,交还给引擎。

Downloader(下载器):负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到的Responses交还给Scrapy Engine(引擎),由引擎交给Spider来处理,

Spider(爬虫):它负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给引擎,再次进入Scheduler(调度器),

Item Pipeline(管道):它负责处理Spider中获取到的Item,并进行进行后期处理(详细分析、过滤、存储等)的地方.

Downloader Middlewares(下载中间件):你可以当作是一个可以自定义扩展下载功能的组件。

Spider Middlewares(Spider中间件):你可以理解为是一个可以自定扩展和操作引擎和Spider中间通信的功能组件(比如进入Spider的Responses;和从Spider出去的Requests)

开发流程

开发一个简单爬虫步骤:

  • 新建项目

scrapy startproject demo
  • 编写spider

    • 种子url (请求)

    • 解析方法

  • 编写item
    结果数据模型

  • 持久化
    编写pipelines

生成目录介绍

scrapy.cfg :项目的配置文件mySpider/ :项目的Python模块,将会从这里引用代码mySpider/items.py :项目的目标文件mySpider/pipelines.py :项目的管道文件mySpider/settings.py :项目的设置文件mySpider/spiders/ :存储爬虫代码目录

使用命令创建爬虫类

scrapy genspider gitee "gitee.com"

解析

通常我们解析都会涉及到 xpath csspath 正则,有的时候可能还有jsonpath(python中json访问基本不用使用复杂的jsonpath,字典访问就可以)
scrapy 内置xpath和csspath支持

Selector

而解析器本身也可以单独使用

  • xpath()

  • extract_first()

  • extract() #返回一个列表

  • 索引访问,因为scrapy.selector.unified.SelectorList继承list,可以通过索引访问

from scrapy import Selectorif __name__ == '__main__':    body = """        Title    

hello

hello

""" s = Selector(text=body) title=s.xpath("//title/text()").extract_first();#抽取 print(title) #Title pe = s.xpath("//p") print(s.xpath("//p").extract()) #['

hello

', '

hello

'] print(pe) #[, ] print(type(pe)) # print(type(pe[0])) #通过索引访问 # print(type(pe.pop())) # p=s.xpath("//p").extract_first() print(p)
  • css()
    css选择器我们::text选择内容,用::attr() 选择属性

print(s.css("title").extract_first())print(s.css("title::text").extract_first())print(s.css("title::text").extract())print(s.css("p.big::text").extract_first())print(s.css("p.big::attr(class)").extract_first())# Title# Title# ['Title']# hello big# big
  • css()和xpath()混用
    scrapy.selector.unified.SelectorList scrapy.selector.unified.Selector 本身有css和xpath方法,所以可以组合使用

print(s.xpath("//body").css("p.big").extract_first())print(s.css("body").xpath("//p[@class='big']").extract_first())# 

hello big

#

hello big

  • re()和re_first()
    scrapy.selector.unified.SelectorList scrapy.selector.unified.Selector 拥有 re()方法,支持通过正则来过滤

print(s.xpath("//p/text()").re_first("big"))print(type(s.xpath("//p/text()").re("big")))# big# 

** 但re()返回列表,.re_first返回str,所以不能再继续调用其他的选择方法

在爬虫中使用解析器

response对象已经

class GiteeSpider(scrapy.Spider):    name = 'gitee'    allowed_domains = ['gitee.com']    start_urls = ['https://gitee.com/haimama']    def parse(self, response):        print(type(response))        t=response.xpath("//title/text()").extract_first()        print(t)##启动爬虫执行后的结果# 执行结果省略日志# # 码马 (haimama) - Gitee

response对象类型为 scrapy.http.response.html.HtmlResponse,该类继承TextResponse 。拥有xpath()和css()方法如下

所以response 可以直接使用前文中的Selector 的方式来解析

    def xpath(self, query, **kwargs):        return self.selector.xpath(query, **kwargs)    def css(self, query):        return self.selector.css(query)

配置文件

settings.py是爬虫的配置文件,要正常启动爬虫的话,一定注意将robo协议限制 修改为 ROBOTSTXT_OBEY = False
其他相关配置,我们下节再介绍

启动爬虫

在爬虫目录编写run.py方法,添加如下脚本,这样就可以直接执行爬虫了。如果命令行执行的话scrapy crawl gitee。其中gitee为爬虫名,对应GiteeSpider中的name字段

# coding: utf-8from scrapy import cmdlineif __name__ == '__main__':    cmdline.execute("scrapy crawl gitee".split())# scrapy crawl gitee

读到这里,这篇"python爬虫利器scrapy怎么使用"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。

爬虫 引擎 数据 文件 方法 项目 处理 选择 配置 利器 中间件 内容 文章 框架 目录 索引 结果 不用 代码 功能 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 江苏根荣互联网科技 互联网科技工作委员会副主任毛军 新华互联网科技学校 疫情对互联网科技公司影响 互联网科技股午盘股票涨跌 青海省互联网新科技 青岛中康互联网医疗科技有限公司 小米互联网科技园设置 华服互联网科技官网 贵州叶脉互联网科技有限公司所属行业 互联网校园科技培训 互联网科技与大数据专业 电子科技大学互联网创业大赛 中国互联网十大科技股排名 翼展科技 首家互联网医院 工业互联网科技创业 同城互联网络科技 互联网科技博主张洲 科技互联网专业务虚会材料 恒生科技互联网指数十大成分股 百单网互联网科技有限公司怎么样 金融科技还是互联网 哈尔滨新华互联网科技 承德科技产业互联网发展 现代互联网科技股 呼和浩特新华互联网科技学院 山东有哪些互联网科技公司 互联网科技手机排行榜 广西科技产业互联网是什么 深圳互联网科技园地址
0