Spider 类¶
这里列出了爬虫框架中各个类的参数、属性和方法。
可以直接导入:
scrapling.spiders.Spider
¶
基类: ABC
flowchart TD
scrapling.spiders.Spider[Spider]
click scrapling.spiders.Spider href "" "scrapling.spiders.Spider"
用于创建网页 Spider 的抽象基类。
更多信息请查看文档网站。
初始化 Spider。
| 参数 | 说明 |
|---|---|
crawldir
|
检查点文件目录。指定后即可暂停和恢复。 |
interval
|
定期保存检查点的间隔,单位为秒(默认 5 分钟)。
类型:
|
源代码位于 scrapling/spiders/spider.py
concurrent_requests_per_domain
class-attribute
instance-attribute
¶
autothrottle_target_concurrency
class-attribute
instance-attribute
¶
logging_format
class-attribute
instance-attribute
¶
start_requests
async
¶
生成开始抓取所需的初始请求。
默认会为 start_urls 中的每个 URL 生成 Request 对象,使用会话管理器的默认会话,并以 parse() 作为回调。
重写此方法可以更灵活地控制初始请求,例如添加自定义请求头、使用不同的回调等。
源代码位于 scrapling/spiders/spider.py
parse
abstractmethod
async
¶
处理响应的默认回调。
源代码位于 scrapling/spiders/spider.py
on_start
async
¶
抓取开始前调用。可以重写以执行初始化逻辑。
| 参数 | 说明 |
|---|---|
resuming
|
Spider 从检查点恢复时,此值为启用状态,可按需使用。
类型:
|
源代码位于 scrapling/spiders/spider.py
on_close
async
¶
on_error
async
¶
on_scraped_item
async
¶
is_blocked
async
¶
retry_blocked_request
async
¶
__repr__
¶
configure_sessions
¶
配置此 Spider 的会话。
重写此方法以添加自定义会话。默认实现会创建一个 FetcherSession 会话。
除非另行指定,添加的第一个会话会成为 start_requests() 的默认会话。
| 参数 | 说明 |
|---|---|
manager
|
要配置的 SessionManager。
类型:
|
源代码位于 scrapling/spiders/spider.py
pause
¶
start
¶
运行 Spider 并返回结果。
这是运行 Spider 的主要入口,内部通过 anyio 处理异步执行。
按 Ctrl+C 会开始有序停止,等待正在运行的任务完成。再次按 Ctrl+C 会立即强制停止。
设置了 crawldir 时,有序停止还会保存检查点。以后再次运行 Spider 即可恢复抓取。
| 参数 | 说明 |
|---|---|
use_uvloop
|
是否在可用时使用速度更快的 uvloop/winloop 事件循环实现。
类型:
|
backend_options
|
传给
类型:
|
源代码位于 scrapling/spiders/spider.py
stream
async
¶
以流式方式输出抓取到的数据项。适合长时间运行的 Spider,或基于 Spider 构建应用。
必须在异步上下文中调用。数据项抓取完成后会逐个产出。迭代时可以通过 spider.stats 访问实时统计数据。
注意:流式模式不支持通过 SIGINT 处理暂停和恢复。
源代码位于 scrapling/spiders/spider.py
scrapling.spiders.Request
¶
Request(
url,
sid="",
callback=None,
priority=0,
dont_filter=False,
meta=None,
_retry_count=0,
**kwargs
)
源代码位于 scrapling/spiders/request.py
copy
¶
创建此请求的副本。
源代码位于 scrapling/spiders/request.py
update_fingerprint
¶
生成用于去重的唯一指纹。
首次计算后,将结果缓存到 self._fp。
源代码位于 scrapling/spiders/request.py
__repr__
¶
__str__
¶
__lt__
¶
__gt__
¶
__eq__
¶
指纹相同的请求视为相等。
源代码位于 scrapling/spiders/request.py
__getstate__
¶
准备 pickle 序列化所需的状态,将回调名称保存为字符串,以兼容 pickle。
源代码位于 scrapling/spiders/request.py
__setstate__
¶
从 pickle 恢复状态,回调稍后通过 _restore_callback() 恢复。
结果类¶
scrapling.spiders.result.CrawlStats
dataclass
¶
CrawlStats(
requests_count=0,
concurrent_requests=0,
concurrent_requests_per_domain=0,
failed_requests_count=0,
offsite_requests_count=0,
robots_disallowed_count=0,
cache_hits=0,
cache_misses=0,
response_bytes=0,
items_scraped=0,
items_dropped=0,
start_time=0.0,
end_time=0.0,
download_delay=0.0,
autothrottle_enabled=False,
blocked_requests_count=0,
autothrottle_delays=dict(),
custom_stats=dict(),
response_status_count=dict(),
domains_response_bytes=dict(),
sessions_requests_count=dict(),
proxies=list(),
log_levels_counter=dict(),
)
一次抓取运行的统计数据。
concurrent_requests_per_domain
class-attribute
instance-attribute
¶
autothrottle_delays
class-attribute
instance-attribute
¶
response_status_count
class-attribute
instance-attribute
¶
domains_response_bytes
class-attribute
instance-attribute
¶
sessions_requests_count
class-attribute
instance-attribute
¶
log_levels_counter
class-attribute
instance-attribute
¶
increment_status
¶
increment_response_bytes
¶
increment_requests_count
¶
to_dict
¶
源代码位于 scrapling/spiders/result.py
scrapling.spiders.result.ItemList
¶
基类: list
flowchart TD
scrapling.spiders.result.ItemList[ItemList]
click scrapling.spiders.result.ItemList href "" "scrapling.spiders.result.ItemList"
支持导出的抓取数据项列表。
to_json
¶
将数据项导出到 JSON 文件。
| 参数 | 说明 |
|---|---|
path
|
输出文件的路径。 |
indent
|
使用 2 个空格缩进格式化输出(稍慢)。
类型:
|
源代码位于 scrapling/spiders/result.py
to_jsonl
¶
将数据项导出为 JSON Lines,每行一个 JSON 对象。
| 参数 | 说明 |
|---|---|
path
|
输出文件的路径。 |
源代码位于 scrapling/spiders/result.py
to_csv
¶
将数据项导出到 CSV 文件。
键不完全相同的数据项仍会写入文件,缺失的单元格会留空,非标量值(嵌套字典或列表)会以 JSON 写入。
| 参数 | 说明 |
|---|---|
path
|
输出文件的路径。 |
fields
|
要写入的列,默认包括数据项中的所有键,按首次出现的顺序排列。
类型:
|
delimiter
|
列分隔符。
类型:
|
源代码位于 scrapling/spiders/result.py
to_xml
¶
将数据项导出到 XML 文件。
每个数据项会变成一个元素,其子元素以数据项的键命名。不符合 XML 名称规则的键会被改写,原始名称保存在 name 属性中。非标量值(嵌套字典或列表)会以 JSON 写入。
| 参数 | 说明 |
|---|---|
path
|
输出文件的路径。 |
root_tag
|
包含所有数据项的元素名称。
类型:
|
item_tag
|
包含单个数据项的元素名称。
类型:
|
indent
|
格式化文件,便于阅读,而不是将内容全部写在一行。
类型:
|
源代码位于 scrapling/spiders/result.py
会话管理¶
scrapling.spiders.session.SessionManager
¶
管理预先配置好的会话实例。
源代码位于 scrapling/spiders/session.py
add
¶
注册会话实例。
| 参数 | 说明 |
|---|---|
session_id
|
在请求中引用此会话的名称。
类型:
|
session
|
预先配置好的会话实例。
类型:
|
default
|
为 True 时,将此会话设为默认会话。
类型:
|
lazy
|
为 True 时,仅在请求使用此会话 ID 时启动会话。
类型:
|
源代码位于 scrapling/spiders/session.py
remove
¶
pop
¶
移除并返回会话。
| 参数 | 说明 |
|---|---|
session_id
|
要移除的会话 ID。
类型:
|
源代码位于 scrapling/spiders/session.py
get
¶
start
async
¶
启动所有尚未运行的会话。
源代码位于 scrapling/spiders/session.py
close
async
¶
关闭所有已注册的会话。