前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >精通Python爬虫框架Scrapy_php爬虫框架哪个好用

精通Python爬虫框架Scrapy_php爬虫框架哪个好用

作者头像
全栈程序员站长
发布于 2022-11-01 02:04:55
发布于 2022-11-01 02:04:55
1.3K00
代码可运行
举报
运行总次数:0
代码可运行

文章目录

讲解Scrapy框架之前,为了让读者更明白Scrapy,我会贴一些网站的图片和代码。 但是,【注意!!!】 【以下网站图片和代码仅供展示!!如果大家需要练习,请自己再找别的网站练习。】 【尤其是政府网站,千万不能碰哦!】


一、Scrapy框架原理

1、Scrapy特点

  • 特点
    • 是一个用Python实现的为了爬取网站数据、提取数据的应用框架
    • Scrapy使用Twisted异步网络库来处理网络通讯
    • 使用Scrapy框架可以高效(爬取效率和开发效率)完成数据爬取

2、Scrapy安装

  • Ubuntu安装
    • sudo pip3 install Scrapy
  • Windows安装
    • python -m pip install Scrapy

3、Scrapy架构图

  • 整理(面试中常问到的问题)
    • Scrapy架构有几个组件?他们具体的工作流程是什么? 答:Scrapy架构有5个组件:分别为 引擎爬虫文件(负责数据解析处理的)、调度器(负责维护请求队列的)、 下载器(负责发请求得到响应对象的)、项目管道(负责数据处理的) 大致的工作流程是:爬虫项目启动,引擎找到爬虫索要第一批要抓取的URL地址,交给调度器入队列,再出队列,交给下载器去下载,下载器下载完成之后,拿到response。拿到的response通过引擎交给爬虫。爬虫文件负责具体的数据解析提取,提取出来的数据交给项目管道进行处理;如果是要继续跟进的URL地址,则再次交给调度器入队列,如此循环。

4、Scrapy五大组件

  • 五大组件及作用
    • 引擎(Engine):整个框架核心
    • 调度器(Scheduler):维护请求队列
    • 下载器(Downloader):获取响应对象
    • 爬虫文件(Spider):数据解析提取
    • 项目管道(Pipeline):数据入库处理
  • 两个中间件及作用
    • 下载器中间件(Downloader Middlewares) 请求对象 –> 引擎 –> 下载器,包装请求(随机代理等)
    • 蜘蛛中间件(Spider Middlewares) 相应对象 –> 引擎 –> 爬虫文件,可修改响应对象属性

5、Scrapy工作流程

  • 工作流程描述 – 爬虫项目正式启动
    • 引擎向爬虫程序索要第一批要爬取的URL,交给调度器入队列
    • 调度器处理请求后出队列,通过下载器中间件交给下载器去下载
    • 下载器得到响应对象后,通过蜘蛛中间件交给爬虫程序
    • 爬虫程序进行数据提取: 数据交给管道文件去入库处理 对于需要跟进的URL,再次交给调度器入队列,如此循环。

二、Scrapy创建项目

  • 创建项目(通过命令创建项目)
    • 语法:scrapy startproject 项目结构
  • 创建爬虫文件名
    • 语法:scrapy genspider 爬虫文件名 允许爬取的域名
    • 此处创建爬虫文件名为小写的baidu,和项目名Baidu区分开。
  • Scrapy项目目录结构
  • scrapy.cfg:爬虫项目的配置文件。
  • __init__.py:爬虫项目的初始化文件,用来对项目做初始化工作。
  • items.py:爬虫项目的数据容器文件,用来定义要获取的数据。
  • pipelines.py:爬虫项目的管道文件,用来对items中的数据进行进一步的加工处理。
  • settings.py:爬虫项目的设置文件,包含了爬虫项目的设置信息。
  • middlewares.py:爬虫项目的中间件文件。

三、Scrapy配置文件详解

1、项目完成步骤

  • Scrapy爬虫项目完整步骤
    • 新建项目和爬虫文件
    • 定义要抓取的数据结构:items.py
    • 完成爬虫文件数据解析提取:爬虫文件名.py
    • 管道文件进行数据处理:pipelines.py
    • 对项目进行全局配置:settings.py
    • pycharm运行爬虫项目:run.py

2、爬虫文件详解

  • 常用配置
    • name :爬虫名,当运行爬虫项目时使用
    • allowed_domains :允许爬取的域名,非本域的URL地址会被过滤
    • start_urls :爬虫项目启动时起始的URL地址
  • 爬虫文件运行流程描述
    • 爬虫项目启动,引擎找到此爬虫文件,将start_urls中URL地址拿走 交给调度器入队列,然后出队列交给下载器下载,得到response response通过引擎又交还给了此爬虫文件,parse函数中的参数即是

3、settings.py详解

  • settings.py常用配置
    • 设置User-Agent :USER_AGENT = ' '
    • 设置最大并发数(默认为16) :CONCURRENT_REQUESTS = 32
    • 下载延迟时间(每隔多久访问一个网页) :DOWNLOAD_DELAY = 0.1
    • 请求头 :DEFAULT_REQUEST_HEADERS = { }
    • 设置日志级别 :LOG_LEVEL = ' '
    • 保存到日志文件LOG_FILE = 'xxx.log'
    • 设置数据导出编码 :FEED_EXPORT_ENCODING = ' '
    • 项目管道 – 优先级1-1000,数字越小优先级越高
      • ITEM_PIPELINES = { '项目目录名.pipelines.类名': 优先级}
    • cookie(默认禁用,取消注释 – True|False都为开启)
      • COOKIES_ENABLED = False
    • 下载器中间件
      • DOWNLOADER_MIDDLEWARES = { '项目目录名.middlewares.类名': 优先级}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 17行,设置USER_AGENT
USER_AGENT = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1'

# 20行,是否遵循robots协议,一定要设置为False
ROBOTSTXT_OBEY = False 

# 23行,最大并发量,默认为16
CONCURRENT_REQUESTS = 32 	

# 28行,下载延迟时间,每隔多长时间发一个请求(降低数据抓取频率)
DOWNLOAD_DELAY = 3

# 34行,是否启用Cookie,默认禁用,取消注释即为开启了Cookie
COOKIES_ENABLED = False

# 40行,请求头,类似于requests.get()方法中的 headers 参数
DEFAULT_REQUEST_HEADERS = { 
   
  'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
  'Accept-Language': 'en',
}

4、run.py 文件详解

  • 运行爬虫的两种方式

在终端项目文件夹中输入scrapy crawl 爬虫文件名

在pycharm中运行:

  • 在最外层的Baidu项目文件中创建run.py
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 在run.py文件中
from scrapy import cmdline

cmdline.execute('scrapy crawl baidu'.split())

5、items.py详解

  • Scrapy提供了Item类,可以自定义爬取字段
  • Item类似我们常说的字典,我们需要抓取哪些字段直接在此处定义即可,当爬虫文件中对Item类进行实例化后,会有方法将数据交给管道文件处理

四、案例

  • 目标
    • 抓取二手车官网二手车收据(我要买车)
  • URL地址规律
    • URL地址:https://…/langfang/buy/o{}/#bread
    • 【网站不方便贴出来,大家要练习的话可以自行再找一个。】
    • URL规律:o1 o2 o3 o4 o5 … …
  • 所抓数据
    • 汽车链接
    • 汽车名称
    • 汽车价格
  • 汽车详情页链接、汽车名称、汽车价格

1、抓取一页数据

1.1 创建项目和爬虫文件

  • scrapy startproject Guazi
  • cd Guazi
  • scrapy genspider guazi www.gauzi.com
  • 此处www.gauzi.com如果写错了,后面也可以直接在文件中修改

1.2 items.py文件

  • 完全按照它的模板写,就是我们需要什么就创建什么
  • 那么所有的value都是空值,什么时候赋值呢?等爬虫把数据抓取下来之后再赋值。

1.3 写爬虫文件

  • 代码中的li_list的xpath可能写的不准确,但是大概思路是这样的。

1.4 管道:pipelines.py文件

1.5 全局配置:settings.py文件

1.6 运行文件:run.py

  • 在最外层的Guazi文件中创建 run.py

2、抓取多页数据

  • 爬虫文件:guazi.py
  • 整理

3、快捷抓取多页数据

4、总结 – 爬虫项目启动方式

  • 基于start_urls启动 从爬虫文件的start_urls变量中遍历URL地址交给调度器入队列 把下载器返回的响应对象交给爬虫文件的parse()函数处理
  • 重写start_requests()方法 去掉start_urls变量 def start_requests(self): ​ 生成要爬取的URL地址,利用scrapy.Request()交给调度器

五、Scrapy数据持久化

1、管道文件详解

  • 管道文件使用说明 – pipelines.py ​ 管道文件主要用来对抓取的数据进行处理 ​ 一般一个类即为一个管道,比如创建存入MySQLMongoDB的管道类 ​ 管道文件中 process_item()方法即为处理所抓取数据的具体方法
  • 创建多个管道 ​ 如图创建了3个管道,从终端数据、存入MySQL、存入MongoDB ​ 如果要开启这3个管道,需要在settings.py中添加对应管道
  • open_spider()方法 和 close_spider()方法
    • open_spider()
      • 爬虫项目启动时只执行1次,一般用于数据库连接
    • process_item()
      • 处理爬虫抓取的具体数据
    • close_spider()
      • 爬虫项目结束时只执行1次,一般用于收尾工作

。:.゚ヽ(。◕‿◕。)ノ゚.:。+゚

  • process_item() 函数必须要 return item
    • 存在多管道时,会把此函数的返回值继续交由下一个管道继续处理

2、Scrapy数据持久化

  • Scrapy数据持久化到MySQL数据库 ​ 在settings.py中定义MySQL相关变量 ​ pipelines.py中导入settings来创建数据库连接并处理数据 ​ settings.py中添加此管道
  • Scrapy数据持久化到MongoDB数据库 ​ 在settings.py中定义MongoDB相关变量 ​ pipelines.py中导入settings来创建数据库连接并处理数据 ​ settings.py中添加此管道

3、将数据存入MySQL和MongoDB数据库

  • 思路 ​ settings.py 中定义相关数据库变量 ​ pipelines.py 中处理数据 ​ settings.py 中开启管道
  • 将数据存入本地的csv文件、json文件中scrapy crawl car -o car.csvscrapy crawl car -o car.json
  • 针对json文件设置导出编码 ​ settings.py 中添加 :FEED_EXPORT_ENCODING = 'utf-8'

。:.゚ヽ(。◕‿◕。)ノ゚.:。+゚

提前建库建表

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
create database guazidb charset utf8;
use guazidb;
create table guazitab(
    name varchar(200),
    price varchar(100),
    link varchar(300)
)charset=utf8;

六、多级页面数据抓取

  • 两级页面数据抓取
    • 一级页面所抓数据(和之前一致)
      • 汽车链接、汽车名称、汽车价格
    • 二级页面所抓数据
      • 上牌时间、行驶里程、排量、变速箱

。:.゚ヽ(。◕‿◕。)ノ゚.:。+゚

  • 整体思路 – 在之前scrapy项目基础上升级
    • items.py中定义所有要抓取的数据结构
    • guazi.py中将详情页链接继续交给调度器入队列
    • pipelines.py中处理全部汽车信息的item对象

。:.゚ヽ(。◕‿◕。)ノ゚.:。+゚

item对象如何在两级解析函数中传递 – meta参数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
yield scrapy.Request(
	url=url,meta={ 
     'item':item},callback=self.xxx
)

爬虫文件思路代码


案例操作:

  • 添加字段:item.py
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 上牌时间、行驶里程、排量、变速箱
    time = scrapy.Field()
    km = scrapy.Field()
    displacement = scrapy.Field()
    typ = scrapy.Field()

解析数据:guazi.py文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import scrapy
from ..items import GuaziItem
class GuaziSpider(scrapy.Spider):
name = 'guazi'
allowed_domains = ['www.guazi.com']
# 1. 删掉start_urls变量
# 2. 重写start_requests()方法
def start_requests(self):
"""一次性生成所有要抓取的URL地址,一次性交给调度器入队列"""
for i in range(1, 6):
url = 'https://www.guazi.com/langfang/buy/o{}/#bread'.format(i)
# 交给调度器入队列,并指定解析函数
yield scrapy.Request(url=url, callback=self.detail_page)
def detail_page(self, response):
li_list = response.xpath('//div[@class="carlist-content clearfix"]/div')
for li in li_list:
# 给items.py中的GuaziItem类做实例化
item = GuaziItem()
item['name'] = li.xpath('./h5/text()').get()
item['price'] = li.xpath('./div[@class="card-price"]/p/text()').get()
item['link'] = 'https://www.guazi.com'+li.xpath('./img/@src').get()
# 把每辆汽车详情页的链接交给调度器入队列
# meta参数:在不同的解析函数之间传递数据
yield scrapy.Request(url=item['link'], meta={ 
'item':item}, callback=self.get_car_info)
def get_car_info(self,response):
'''提取每辆汽车二级页面的数据'''
# meta会随着response一起回来,作为response的一个属性
item = response.meta['item']
item['time'] = response.xpath(".//li[@class='one']/text()").get().strip()
item['km'] = response.xpath(".//li[@class='two']/span/text()").get().strip()
item['displacement'] = response.xpath(".//li[@class='three']/span/text()").get().strip()
item['typ'] = response.xpath(".//li[@class='one']/text()").get().strip()
# 至此,一辆汽车的完整数据提取完成!交给管道文件处理去吧!
yield item

管道文件存储数据:pipelines.py

之前写过了,这里再回忆一下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 管道3 - 存入MongoDB数据库管道
import pymongo
class GuaziMongoPipeline(object):
def open_spider(self, spider):
"""连接mongodb"""
self.conn = pymongo.MongoClient(MONGO_HOST, MONGO_PORT)
self.db = self.conn[MONGO_DB]
self.myset = self.db[MONGO_SET]
def process_item(self, item, spider):
d = dict(item)
self.myset.insert_one(d)
return item

全局配置:settings.py

运行,查看mongo

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> use guazidb;
> show collections
> db.guaziset.find().pretty()

此网站设置了反爬,所以有的字段爬取不到,不过没有关系,思路懂了就行。大多数小型网站是没有这种反爬的。


知识点汇总

  • 请求对象request属性及方法
    • request.url : 请求URL地址
    • request.headers : 请求头 – 字典
    • request.meta : 解析函数间item数据传递、定义代理
    • request.cookies : Cookie
  • 响应对象response属性及方法
    • response.url : 返回实际数据的URL地址
    • response.text : 响应对象 – 字符串
    • response.body : 响应对象 – 字节串
    • response.encoding : 响应字符编码
    • response.status : HTTP响应码

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/179487.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月21日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
Android-Gradle(二) Gradle相关配置详解
Gradle是一个项目自动化建构工具,它使用一种基于Groovy的特定领域语言来声明项目设置,而不是传统的XML。Gradle主要帮我们做了依赖,打包,部署,发布,各种渠道的差异管理等工作。当前其支持的语言限于Java、Groovy和Scala,计划未来将支持更多的语言。
android_薛之涛
2019/08/23
3.7K0
Android-Gradle(二) Gradle相关配置详解
Gradle for Android简要指南
前言 Android官网构建系统介绍https://developer.android.com/studio/build/index.html
Anymarvel
2018/10/22
8910
Gradle for Android 系列:为什么 Gradle 这么火
本文主要介绍了在 Android Studio 中使用 Gradle 进行项目构建的一些基础概念和优点。通过使用 Gradle,可以更加灵活地管理项目构建,支持多种插件和扩展,同时提高了构建的效率。同时,Gradle 还提供了丰富的 API,方便开发者进行自定义插件开发。
张拭心 shixinzhang
2018/01/05
1.6K0
Gradle for Android 系列:为什么 Gradle 这么火
Gradle 构建:从入门到实战
本文章主要针对Gradle讲解,从入门到实战(Android Studio),让你快速上手Gradle。
陈宇明
2020/12/15
9410
Gradle 构建:从入门到实战
最新版gradle安装使用简介
gradle的最新版本是6.7,从2009年的第一个版本,到2020年的6.7,已经发展了11年了。gradle是作为android的官方构建工具引入的,除了java,它还能够支持多种语言的构建,所以用途非常广泛。
程序那些事
2021/02/07
1.3K0
这一次彻底弄明白Gradle相关配置
作者:19snow93 链接:https://www.jianshu.com/p/8b8a550246bd 本文由作者 19snow93 授权发布。 当毕业不够两年,身边的朋友慢慢得有车有房有女朋友周末有自己的节目,而我觉得很多美好的事情我都遥不可及,找不到可以让自己开心的事情做,心情很不好。但是同时我觉得沉淀需要时间、努力、耐心和自律,所以我总相信艰难的时候是总会过去,迎接自己的美好生活总到来的,给自己喊一句:“加油!”。 好了,牢骚发完了,最近我看了《Android Gradle权威指南》这本书,虽然
用户1269200
2018/06/22
4.9K0
【Android】Android Studio 开发工具 / Android Gradle Plugin 插件 / Gradle 构建工具版本兼容问题 ( 2023 年 4 月 17 日更新 )
Android Gradle 插件在 Android Studio 工程根目录 下的 build.gradle 构建脚本中配置 , 其中 id 'com.android.application' version 和 id 'com.android.library' version 配置的就是 Android Gradle Plugin 插件的版本号 ;
韩曙亮
2023/04/24
4.7K0
使用Gradle管理你的Android Studio工程
关于Android Gradle更多详细内容已经出书《Android Gradle权威指南》,大家可以购买,看更多没有介绍的知识点和内容,购买链接如下
飞雪无情
2018/08/28
1.1K0
关于Gradle配置的小结
使用 Android Studio 来开发 Android 工程的过程中,接触 Gradle 是不可避免的,比如配置签名、引入依赖等。那么 Gradle 到底是什么东西呢? Gradle 是一个基于 Apache Ant 和 Apache Maven 概念的项目自动化建构工具。它使用一种基于 Groovy 的特定领域语言 (DSL) 来声明项目设置,抛弃了基于 XML 的各种繁琐配置 (此定义来自于百度百科-_- !) 。啰里啰唆一堆,幸运的是,一般来说 Android 开发者只要会配置 Gradle 就可以了,并不需要深入了解。那么下面我们就来揭开 Gradle 的面纱吧。
俞其荣
2022/07/28
6490
关于Gradle配置的小结
Android Gradle 入门
Gradle是一款非常优秀的构建系统工具,它的DSL基于Groovy实现,可以让你很方便的通过代码控制这些DSL来达到你构建的目的,其构建的大部分功能都是通过插件的方式来实现,所以非常灵活方便,如果内置插件不能满足你的需求你可以自定义自己的插件。
飞雪无情
2018/08/28
9600
读书笔记--Android Gradle权威指南(上)前言笔记
最近看了一本书《Android Gradle 权威指南》,对于 Gradle 理解又更深了,但不想过段时间就又忘光了,所以打算写一篇读书笔记,将书中一些我个人觉得蛮有用的点记录、总结一下。 前言 首先,先来过一下整书的目录章节,先大概清楚整本书都介绍了哪些知识点: 第 1 章 Gradle 入门 第 2 章 Groovy 基础 第 3 章 Gradle 构建脚本基础 第 4 章 Gradle 任务 第 5 章 Gradle 插件 第 6 章 Ja
请叫我大苏
2018/06/19
1.3K0
Android 项目Gradle文件讲解(Groovy和Kotlin)
  在Android应用开发中,Gradle是很重要的,它关系到你的项目能否正常编译运行,构建APK等等,而随着Android Studio编辑器的更新,Gradle也发生了一些变化。
晨曦_LLW
2024/11/28
2.3K0
Android 项目Gradle文件讲解(Groovy和Kotlin)
Android Gradle系列-入门篇
接下来的一段时间会对Android Gradle的相关知识进行梳理,所以借此整理成一个系列。如果你是刚入行的新秀,那么这个系列将会非常适合你,因为Android基本的配置都与Gradle有关。当然如果你已经入行,但对Gradle还是停留在表面的认知上,这个系列也会对你有所帮助。
Rouse
2019/07/17
8580
Android Gradle系列-入门篇
Android Studio 中的Gradle版本介绍
如果你针对Android Studio中的Gradle插件有不懂。打开老项目的时候,经常由于Gradle的版本号问题造成项目无法编译。
zinyan.com
2023/07/13
2.5K0
Android Studio 中的Gradle版本介绍
android Gradle的几个基本概念
什么是Gradle? Gradle是一种依赖管理工具,基于Groovy语言,面向Java应用为主,它抛弃了基于XML的各种繁琐配置,取而代之的是一种基于Groovy的内部领域特定(DSL)语言。
xiangzhihong
2018/02/02
6190
android Gradle的几个基本概念
【Android Gradle 插件】Gradle 基础配置 ⑤ ( gradle-wrapper.properties 配置分析 | GRADLE_USER_HOME 目录 )
Gradle Wrapper 配置 主要的 gradle-wrapper.properties 配置文件 内容如下 :
韩曙亮
2023/03/30
3.2K0
【Android Gradle 插件】Gradle 基础配置 ⑤ ( gradle-wrapper.properties 配置分析 | GRADLE_USER_HOME 目录 )
【Groovy】Gradle 构建工具 ( 自动下载并配置构建环境 | 提供 API 扩展与开发工具集成 | 内置 Maven 和 Ivy 依赖管理 | 使用 Groovy 编写构建脚本 )
Gradle Wrapper ( 包装器 ) 作用 : 自动搭建 Gradle 构建环境 , 防止 因为 Gradle 构建工具环境 出现问题 , 导致编译错误 ;
韩曙亮
2023/03/30
1.7K0
【Groovy】Gradle 构建工具 ( 自动下载并配置构建环境 | 提供 API 扩展与开发工具集成 | 内置 Maven 和 Ivy 依赖管理 | 使用 Groovy 编写构建脚本 )
Gradle和Maven仓库介绍
Gradle是一个基于JVM的构建工具,是一款通用灵活的构建工具,支持maven, Ivy仓库,支持传递性依赖管理,而不需要远程仓库或者是pom.xml和ivy.xml配置文件,基于Groovy,build脚本使用Groovy编写。
李小白是一只喵
2021/01/21
2.3K0
【Android Gradle 插件】Gradle 基础配置 ④ ( Gradle Wrapper 配置作用 | Gradle 下载的依赖库存放位置 )
在上一篇博客 【Android Gradle 插件】Gradle 基础配置 ③ ( 生成 Gradle Wrapper 配置 | 分析生成的 gradle-wrapper.properties 配置文件 ) 中 , 执行
韩曙亮
2023/03/30
1.3K0
【Android Gradle 插件】Gradle 基础配置 ④ ( Gradle Wrapper 配置作用 | Gradle 下载的依赖库存放位置 )
推荐阅读
相关推荐
Android-Gradle(二) Gradle相关配置详解
更多 >
LV.3
山东省在读博士
目录
  • 文章目录
  • 一、Scrapy框架原理
    • 1、Scrapy特点
    • 2、Scrapy安装
    • 3、Scrapy架构图
    • 4、Scrapy五大组件
    • 5、Scrapy工作流程
  • 二、Scrapy创建项目
  • 三、Scrapy配置文件详解
    • 1、项目完成步骤
    • 2、爬虫文件详解
    • 3、settings.py详解
    • 4、run.py 文件详解
    • 5、items.py详解
  • 四、案例
    • 1、抓取一页数据
      • 1.1 创建项目和爬虫文件
      • 1.2 items.py文件
      • 1.3 写爬虫文件
      • 1.4 管道:pipelines.py文件
      • 1.5 全局配置:settings.py文件
      • 1.6 运行文件:run.py
    • 2、抓取多页数据
    • 3、快捷抓取多页数据
    • 4、总结 – 爬虫项目启动方式
  • 五、Scrapy数据持久化
    • 1、管道文件详解
    • 2、Scrapy数据持久化
    • 3、将数据存入MySQL和MongoDB数据库
  • 六、多级页面数据抓取
    • 知识点汇总
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档