Mrcdh技术博客 Mrcdh技术博客
首页
  • Html5
  • Javascript
  • Nodejs
  • electron
  • Android
  • 微信公众号
  • 框架
  • 其他
  • Mysql
  • PHP
  • Python
  • java
  • Gulp
  • 其它
  • 网站
  • 资源
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Mrcdh

全栈开发小学生
首页
  • Html5
  • Javascript
  • Nodejs
  • electron
  • Android
  • 微信公众号
  • 框架
  • 其他
  • Mysql
  • PHP
  • Python
  • java
  • Gulp
  • 其它
  • 网站
  • 资源
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • Mysql

  • PHP

  • Python

    • scrapy

      • Scrapy快速入手
        • 安装
        • 初始化 Scrapy 项目
          • 目录结构
          • 创建蜘蛛
          • 启动爬虫
        • 数据模型Item
          • 声明Item
          • 设置字段的值
          • 获取字段的值
          • 枚举字段的键-值
          • 其他操作
          • 复制 Item
          • 根据Item创建字典
          • 根据字典创建Item
          • 扩展(继承)Item
      • scrapy - 保存输入处理登录图片验证码
    • pip基本使用及下载速度慢解决方案
    • python之Anaconda(conda)版本管理
    • 使用python-dcox操作word
    • python之pyenv版本管理
    • 简易python爬虫常用功能
  • java

  • Go

  • 数据库

  • C#

  • ElasticSearch

  • Git

  • Gulp

  • Microsoft

  • Linux

  • 其它

  • 技术
  • Python
  • scrapy
mrcdh
2021-03-02
目录

Scrapy快速入手

# 安装

  • Python3
  • Scrapy 2.4.1
pip install scrapy
1

# 初始化 Scrapy 项目

scrapy startproject mrcdh_scrapy
1

# 目录结构

.
|—— mrcdh_scrapy
|   |—— __init__.py      ## 包定义
|   |—— items.py         ## 模型定义
|   |—— pipelines.py     ## 管道定义
|   |—— settings.py      ## 配置文件
|   |__ spiders          ## 蜘蛛文件夹
|       |__ __init__.py  ## 默认的蜘蛛代码文件
|__ scrapy.cfg           ## Scrapy 的运行配置文件,改文件存放的目录被认为是项目的根目录
1
2
3
4
5
6
7
8
9

# 创建蜘蛛

cd mrcdh    ## 进入创建的项目
scrapy genspider mrcdh mrcdh.cn
1
2

scrapy genspider 命令的第一个参数是蜘蛛的名称,第二个参数是指定 Scrapy爬网的起始位置。

当genspider命令执行成功后,会在项目spiders目录下生成一个mrcdh.py的代码文件,内容如下所示:

import scrapy

class MrcdhSpider(scrapy.Spider):
    name = 'mrcdh'
    allowed_domains = ['mrcdh.cn']
    start_urls = ['http://mrcdh.cn/']

    def parse(self, response):
        pass

1
2
3
4
5
6
7
8
9
10

这个蜘蛛只会向http://mrcdh.cn发送请求,没有其他操作。

# 启动爬虫

使用名称为mrcdh的蜘蛛进行爬网

scrapy crawl mrcdh
1

# 数据模型Item

Item 是一种数据容器,是作为蜘蛛与管道之剑的数据载体,蜘蛛对收集的数据结构进行分析后提取出具体的数据结构并生成对应的Item实例,然后由Scrapy引擎传递给对应的管道进行后处理。

# 声明Item

Item 使用简单的 class 定义语法和 Field 对象来进行声明,只要将Item继承scrapy.Item,每个属性的默认值都构造一个scrapy.Field()实例既可以。

Field 对象指明了每个字段的元数据。

打开items.py发现创建项目是自动生成了一个模型类。

import scrapy

class MrcdhScrapyItem(scrapy.Item):
    pass
1
2
3
4

只需要在类中定义字段即可:

import scrapy

class MrcdhScrapyItem(scrapy.Item):
    title = scrapy.Field()      # 标题
    link = scrapy.Field()       # 链接
    author = scrapy.Field()     # 作者
    time = scrapy.Field()       # 时间
    category = scrapy.Field()   # 分类
1
2
3
4
5
6
7
8

Item 继承自DictItem这个与字典类用法相似的类,所以当Item被实例化后直接当做字典来使用。

# 设置字段的值

mrcdh_item = MrcdhScrapyItem()
mrcdh_item['title'] = 'Scrapy的基本使用'
mrcdh_item['link'] = 'http://mrcdh.cn'
1
2
3

# 获取字段的值

>>> mrcdh_item['title']
Scrapy的基本使用
>>> mrcdh_item['link']
http://mrcdh.cn
1
2
3
4

# 枚举字段的键-值

>>> mrcdh_item.keys()
['title', 'link', ...]
>>> mrcdh_item.items()
[('title', 'Scrapy的基本使用'), ('link', 'http://mrcdh.cn'), ...]
1
2
3
4

# 其他操作

# 复制 Item

mrcdh_item2 = mrcdh_item.copy()
1

# 根据Item创建字典

dict(mrcdh_item)
1

# 根据字典创建Item

mrcdh_item = MrcdhScrapyItem({
    'title': 'Scrapy的基本使用',
    'link': 'http://mrcdh.cn',
    ...
})
1
2
3
4
5

# 扩展(继承)Item

# 通过继承原始 Item 来扩展 Item
class NewMrcdhItem(MrcdhScrapyItem){
    tag = scrapy.Field()        # 标签
}
1
2
3
4
#python#scrapy
上次更新: 2024/01/12, 11:30:32
php快速接入微信支付宝支付easy-pay
scrapy - 保存输入处理登录图片验证码

← php快速接入微信支付宝支付easy-pay scrapy - 保存输入处理登录图片验证码→

最近更新
01
uniapp常见问题
03-19
02
Vue3项目搭建
12-25
03
使用pnpm的monorepo组织项目
11-01
更多文章>
Theme by Vdoing | Copyright © 2020-2025 Mrcdh | 苏ICP备2020058908号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×