Skip to content

Commit

Permalink
docs: fix typo
Browse files Browse the repository at this point in the history
  • Loading branch information
shengchenyang committed Dec 22, 2024
1 parent 87be9d4 commit 83815e5
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 27 deletions.
12 changes: 7 additions & 5 deletions docs/topics/configuration.rst
Original file line number Diff line number Diff line change
Expand Up @@ -247,18 +247,20 @@ mongodb 链接的普通方式,[mongodb:uri] 和 [mongodb] 按需选择一种
oss_fields_prefix 前缀。"
"full_link_enable", "是否开启完整链接,默认 false", "为是否保存完整的 oss 文件链接。"

.. note::

遵守规则时的 oss 上传逻辑时使用,详细介绍请在 :ref:`item 的规则 <topics-items-yield-item>` 部分中\
查看,更复杂的需求也可根据示例自行实现。具体请看 demo_oss,demo_oss_sec 和 demo_oss_super 的场景示\
。请自行选择可接受的风格。
遵守规则时的 oss 上传逻辑时使用,详细介绍请在 :ref:`item 的规则 <topics-items-yield-item>` \
分中查看,更复杂的需求也可根据示例自行实现。具体请看 demo_oss,demo_oss_sec 和 demo_oss_super \
场景示例。请自行选择可接受的风格。

[custom_section]
================

用于自定义配置:

一些 scrapy 第三方扩展需要在 settings.py 中设置一些配置,涉及到 host,密码等隐私配置,直接展示在 \
settings.py 里是不可接受的,这里提供一种方法来解决。
.. note::
一些 scrapy 第三方扩展需要在 settings.py 中设置一些配置,涉及到 host,密码等隐私配置,直接展示在 \
settings.py 里是不可接受的,这里提供一种方法来解决。

在 settings.py 或 spider 等脚本中赋值重要参数时,可以从 VIT_DIR 的 .conf 中获取自定义配置内容,来达\
到隐藏隐私内容和保持配置内容统一存放的目的;比如在 .conf 中自定义配置以下内容:
Expand Down
15 changes: 9 additions & 6 deletions docs/topics/downloader-middleware.rst
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,10 @@ downloader-middleware
},
}
若想查看是否正常运行,只需查看其 scrapy 的 debug 日志,或在 spider 中打印 response 信息然后查看其信\
息即可。
.. note::

若想查看是否正常运行,只需查看其 scrapy 的 debug 日志,或在 spider 中打印 response 信息然后查看\
其信息即可。

2. 代理
==========
Expand Down Expand Up @@ -134,11 +136,12 @@ downloader-middleware
"DOWNLOAD_TIMEOUT": 25,
}
注:
.. note::

- TWISTED_REACTOR 的配置在本库的 settings 中就默认打开的,这里配置是为了演示,不用再次配置的;
- 这里的 scrapy DOWNLOAD_TIMEOUT 同样也是 aiohttp 请求的超时设置参数;
- AIOHTTP_CONFIG 为 aiohttp 的全局配置,是构建 aiohttp.ClientSession 的 connector 时所需的参数;
- TWISTED_REACTOR 的配置在本库的 settings 中就默认打开的,这里配置是为了演示,不用再次配置的;
- 这里的 scrapy DOWNLOAD_TIMEOUT 同样也是 aiohttp 请求的超时设置参数;
- AIOHTTP_CONFIG 为 aiohttp 的全局配置,是构建 aiohttp.ClientSession 的 connector 时所需的\
参数;

AIOHTTP_CONFIG 可配置的参数如下(其实就是 aiohttp.TCPConnector 中的参数):

Expand Down
7 changes: 5 additions & 2 deletions docs/topics/items.rst
Original file line number Diff line number Diff line change
Expand Up @@ -167,8 +167,11 @@ AyuItem 使用详解
>>> item["_table"]
'ta'
>>>
>>> # 注意:虽然也可以通过 item._table 的形式获取,但是不建议这样,显得不明了。
.. note::

虽然也可以通过 ``item._table`` 的形式获取值,但是不建议这样,显得不明了,还是推荐使用 ``item["_table"]`` \
的方式保持风格统一。

添加 / 修改字段(不存在则创建,存在则修改):

Expand Down
27 changes: 13 additions & 14 deletions docs/topics/loaders.rst
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,12 @@ Item Loaders
============

``Item Loaders`` 提供了一种方便的机制来填充已抓取的 ITEM。尽管项目可以直接填充,项目加载器提供了一个更\
方便的 API 来从抓取过程中填充它们,通过自动化一些常见的任务,比如在分配它之前解析原始提取的数据。

换句话说,ITEM 提供了抓取数据的容器,而项目加载器提供了填充该容器的机制。
方便的 API 来从抓取过程中填充它们,通过自动化一些常见的任务,比如在分配它之前解析原始提取的数据。换句话说,\
ITEM 提供了抓取数据的容器,而项目加载器提供了填充该容器的机制。

Item Loaders 旨在提供一种灵活、高效和简单的机制来扩展和覆盖不同的字段解析规则,无论是通过蜘蛛,还是通过\
源格式(``HTML``、``XML`` 等),而不会成为维护的噩梦。

具体请查看 `scrapy` 中对应的 `Item Loaders`_ 的文档。
源格式(``HTML``、``XML`` 等),而不会成为维护的噩梦。具体请查看 scrapy 中对应的 `Item Loaders`_ \
的文档。

由文档可知,如果使用 Item Loaders 需要先声明 Item 子类,并固定 Field 字段。即以下内容示例:

Expand All @@ -26,16 +24,17 @@ Item Loaders 旨在提供一种灵活、高效和简单的机制来扩展和覆
book_href = scrapy.Field()
book_intro = scrapy.Field()
但是本库不固定 Item field 的内容,这样丧失了解放双手的目的。

虽然,scrapy 也可以通过使用如下方法来新增字段,但总归 scrapy 是不推荐这样的写法且不太方便:
但是本库不固定 Item field 的内容,这样丧失了解放双手的目的。虽然,scrapy 也可以通过使用如下方法来新增\
字段,但总归 scrapy 是不推荐这样的写法且不太方便:

.. code-block:: python
Product.fields["add_field1"] = scrapy.Field()
那本库如何实现使用项目加载器填充项目的效果呢,本库是通过 Item 的 asitem 方法实现。具体使用方法请看文章后半段。

.. _topics-loaders-fill-item-by-itemloaders:

使用项目加载器填充项目
======================

Expand Down Expand Up @@ -82,7 +81,7 @@ Item Loaders 旨在提供一种灵活、高效和简单的机制来扩展和覆

那本库的方式在使用 ItemLoader 时有没有缺点呢?

是的,有缺点,本库虽然支持动态添加 Item 字段,但是其实不太好实现 ``dataclass items`` 的字段类型约束和
是的,有缺点,本库虽然支持动态添加 Item 字段,但是其实不太好实现 ``dataclass items`` 的字段类型约束和\
参数 ``default`` 的相关设置。本库是不推荐固定 Item 字段(比如 ayugespidertools v3.0.0 之前的版本中,\
会把数据都存入 ``alldata`` 的固定字段中),也不推荐 spider 中若存在不同 Item 数据类型就需要定义其对应\
的 ``Item class`` 的。其实各有优缺点,只是本库选择了牺牲此部分。
Expand All @@ -93,9 +92,9 @@ Item Loaders 旨在提供一种灵活、高效和简单的机制来扩展和覆
那么,在本库中的使用方法如下:

Item Loader 包含一个输入处理器和一个用于每个 item 字段的输出处理器。输入处理器在收到数据后立即处理提取\
的数据(通过 `add_xpath()`_,`add_css()`_ 或 `add_value()`_ 方法,输入处理器的结果被收集并保存在 \
ItemLoader 中。收集完所有数据后, `ItemLoader.load_item()`_ 调用该方法填充并获取填充的 `项对象`_\
那是使用先前收集的数据(并使用输入处理器处理)调用输出处理器的时候。输出处理器的结果是分配给项目的最终值。
的数据(通过 `add_xpath()`_`add_css()`_ 或 `add_value()`_ 方法,输入处理器的结果被收集并保存在 \
ItemLoader 中。收集完所有数据后, `ItemLoader.load_item()`_ 调用该方法填充并获取填充的 `项对象`_\
那是使用先前收集的数据(并使用输入处理器处理)调用输出处理器的时候。输出处理器的结果是分配给项目的最终值。

让我们看一个示例来说明如何为特定字段调用输入和输出处理器(这同样适用于任何其他字段):

Expand All @@ -109,7 +108,7 @@ ItemLoader 中。收集完所有数据后, `ItemLoader.load_item()`_ 调用该
l.add_value("name", "test") # (4)
return l.load_item() # (5)
然后就可以使用 [使用项目加载器填充项目](# 使用项目加载器填充项目) 中的代码了
然后就可以 :ref:`使用项目加载器填充项目 <topics-loaders-fill-item-by-itemloaders>` 中的代码了

本库主推便捷,不太推荐使用以上代码自定义增加 Item 字段来适配 Item Loaders 的特性,除非某些场景下使用 \
Item Loaders 能够极大方便开发时,才推荐使用下。
Expand Down

0 comments on commit 83815e5

Please sign in to comment.