Response 类¶
Response 类表示所有 Fetcher 返回的 HTTP 响应。它提供状态、响应头、内容和 Cookie,也通过继承 Selector 提供解析功能。
导入 Response 类:
scrapling.engines.toolbelt.custom.Response
¶
Response(
url,
content,
status,
reason,
cookies,
headers,
request_headers,
encoding="utf-8",
method="GET",
history=None,
meta=None,
*,
_log=True,
**selector_config
)
基类: Selector
flowchart TD
scrapling.engines.toolbelt.custom.Response[Response]
scrapling.parser.Selector[Selector]
scrapling.core.mixins.SelectorsGeneration[SelectorsGeneration]
scrapling.parser.Selector --> scrapling.engines.toolbelt.custom.Response
scrapling.core.mixins.SelectorsGeneration --> scrapling.parser.Selector
click scrapling.engines.toolbelt.custom.Response href "" "scrapling.engines.toolbelt.custom.Response"
click scrapling.parser.Selector href "" "scrapling.parser.Selector"
click scrapling.core.mixins.SelectorsGeneration href "" "scrapling.core.mixins.SelectorsGeneration"
所有引擎都返回此类,用于统一不同库的响应类型。
| 参数 | 说明 |
|---|---|
status
|
HTTP 状态码。
类型:
|
reason
|
HTTP 状态消息。
类型:
|
cookies
|
响应中的 Cookie。 |
headers
|
响应头。
类型:
|
request_headers
|
随请求发送的请求头。
类型:
|
history
|
重定向响应列表,如果有的话。
类型:
|
meta
|
元数据字典,例如使用的代理。
类型:
|
request
|
关联的 Spider Request 对象,由 Spider 框架中的爬虫设置。
|
封装输入 HTML 数据的主要类。可以用 CSS、XPath 表达式或简单文本查找元素。更多信息请查看文档。
此类扩展了 lxml.html.HtmlElement 的功能,同时提供更简单的接口。它不继承 lxml.html.HtmlElement,因为该类型无法通过 pickle 序列化,会使许多依赖引用的操作无法完成。尝试这样做会出现 AssertionError: invalid Element proxy at...。这是 lxml 的一个老问题,详见 this entry <https://bugs.launchpad.net/lxml/+bug/736708>。
| 参数 | 说明 |
|---|---|
content
|
字符串或 bytes 形式的 HTML 内容。 |
url
|
允许将 URL 与 HTML 数据一起保存,供以后读取。
类型:
|
encoding
|
解析 HTML 时使用的编码,默认为
类型:
|
huge_tree
|
默认启用,解析大型 HTML 文档时应始终启用。它控制 libxml2 的一项功能,该功能会禁止解析某些大型文档,以避免内存耗尽。
|
root
|
内部用于传入 etree 对象,代替文本或响应体参数,优先级最高。只有了解其影响时才应使用。
|
keep_comments
|
解析 HTML 时是否保留注释,默认关闭。
|
adaptive
|
在所有方法中全局关闭自适应功能。此参数的优先级高于类中所有与自适应有关的参数和方法。
|
storage
|
自适应功能使用的存储类。更多信息请查看
|
storage_args
|
传给存储类的
|
源代码位于 scrapling/engines/toolbelt/custom.py
__slots__
class-attribute
instance-attribute
¶
__slots__ = (
"url",
"encoding",
"__adaptive_enabled",
"_root",
"_storage",
"__keep_comments",
"__huge_tree_enabled",
"__attributes",
"__text",
"__tag",
"_raw_body",
)
markdown
¶
将响应内容转换为干净的 Markdown。
转换前会始终移除脚本、样式、隐藏内容和提示词注入内容,与 MCP 服务器使用的清理方式相同。需要安装 "markdownify" 包(pip install "scrapling[rag]")。
| 参数 | 说明 |
|---|---|
css_selector
|
用于限定转换范围的 CSS 选择器。只转换匹配的元素,并合并所有结果。
类型:
|
main_content_only
|
只转换
类型:
|
源代码位于 scrapling/engines/toolbelt/custom.py
follow
¶
follow(
url,
sid="",
callback=None,
priority=None,
dont_filter=False,
meta=None,
referer_flow=True,
**kwargs
)
创建一个 Request 来跟随 URL。
这是一个辅助方法,方便 Spider 跟随页面中的链接。
重要:下列参数如果留空,会使用前一个请求的对应值。唯一例外是 dont_filter。
前一个请求的会话参数也会继承,但不包括 method、params、data、json、files 和 multipart。因此,除非再次传入这些参数,否则跟随链接时会发送普通 GET 请求。
| 参数 | 说明 |
|---|---|
url
|
要跟随的 URL。可以是相对 URL,会与当前 URL 合并。
类型:
|
sid
|
要使用的会话 ID。
类型:
|
callback
|
要使用的 Spider 回调方法。
类型:
|
priority
|
优先级数值,值越大,越先处理。
类型:
|
dont_filter
|
关闭过滤,让已经发送过的请求也能再次执行。
类型:
|
meta
|
要加入请求的额外元数据。 |
referer_flow
|
默认启用,将当前响应的 URL 设为新请求的 Referer。
类型:
|
kwargs
|
额外的 Request 参数。
类型:
|
| 返回 | 说明 |
|---|---|
Any
|
可以通过 yield 产出的 Request 对象。 |
源代码位于 scrapling/engines/toolbelt/custom.py
__str__
¶
__getitem__
¶
__contains__
¶
__getstate__
¶
get_all_text
¶
获取此元素下的所有字符串,并用指定分隔符连接。
| 参数 | 说明 |
|---|---|
separator
|
连接字符串时使用的分隔符。
类型:
|
strip
|
为 True 时,先去除各字符串两端的空白,再连接。
类型:
|
ignore_tags
|
包含所有要忽略的标签名的元组。
类型:
|
valid_values
|
启用后,忽略文本为空或只包含空白的元素。
类型:
|
| 返回 | 说明 |
|---|---|
TextHandler
|
一个 TextHandler。 |
源代码位于 scrapling/parser.py
urljoin
¶
prettify
¶
返回格式化后更易读的元素内部 HTML 代码。
源代码位于 scrapling/parser.py
has_class
¶
iterancestors
¶
返回一个生成器,从父元素开始遍历当前元素的所有祖先元素。
源代码位于 scrapling/parser.py
find_ancestor
¶
遍历元素的所有祖先,直到某个祖先满足传入函数的条件。
| 参数 | 说明 |
|---|---|
func
|
接收每个祖先元素作为参数,并返回 True 或 False 的函数。 |
| 返回 | 说明 |
|---|---|
Optional[Selector]
|
第一个满足函数条件的祖先元素,如果没有则返回 |
源代码位于 scrapling/parser.py
get
¶
将此元素序列化为字符串。文本节点返回文本值,HTML 元素返回外层 HTML。
源代码位于 scrapling/parser.py
getall
¶
__repr__
¶
源代码位于 scrapling/parser.py
relocate
¶
在页面树中重新查找元素,页面结构变化时会自动使用。
| 参数 | 说明 |
|---|---|
element
|
要在树中重新定位的元素。
类型:
|
percentage
|
可接受的最低匹配百分比。百分比的计算只依赖页面结构,请仅在了解其影响时修改此值。
类型:
|
selector_type
|
为 True 时,将返回结果转换为
类型:
|
| 返回 | 说明 |
|---|---|
Union[List[HtmlElement], Selectors]
|
匹配分数最高的原始 HTML 元素列表,或 'Selectors' 对象。 |
源代码位于 scrapling/parser.py
css
¶
使用 CSS3 选择器搜索当前树。
重要:如果以后打算使用其他选择器,并希望重新定位相同元素,建议使用 identifier 参数。
| 参数 | 说明 |
|---|---|
selector
|
要使用的 CSS3 选择器。
类型:
|
adaptive
|
启用后,如果元素之前已保存,函数会尝试重新定位它。
类型:
|
identifier
|
用于保存和读取自适应元素数据的字符串。未指定时使用选择器。
类型:
|
auto_save
|
自动保存新元素,供之后的
类型:
|
percentage
|
类型:
|
| 返回 | 说明 |
|---|---|
Selectors
|
|
源代码位于 scrapling/parser.py
xpath
¶
使用 XPath 选择器搜索当前树。
重要:如果以后打算使用其他选择器,并希望重新定位相同元素,建议使用 identifier 参数。
注意:额外的关键字参数会作为 XPath 变量传入 XPath 表达式!
| 参数 | 说明 |
|---|---|
selector
|
要使用的 XPath 选择器。
类型:
|
adaptive
|
启用后,如果元素之前已保存,函数会尝试重新定位它。
类型:
|
identifier
|
用于保存和读取自适应元素数据的字符串。未指定时使用选择器。
类型:
|
auto_save
|
自动保存新元素,供之后的
类型:
|
percentage
|
类型:
|
| 返回 | 说明 |
|---|---|
Selectors
|
|
源代码位于 scrapling/parser.py
find_all
¶
通过自己定义的过滤条件查找元素。
| 参数 | 说明 |
|---|---|
args
|
标签名、多个标签名、标签名的可迭代对象、正则表达式、函数,或元素属性字典。留空表示选择全部。
类型:
|
kwargs
|
用于过滤元素的属性。
类型:
|
| 返回 | 说明 |
|---|---|
Selectors
|
包含元素的 |
源代码位于 scrapling/parser.py
710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 | |
find
¶
通过自己定义的过滤条件查找元素,并返回第一个结果。如果没有则返回 None。
| 参数 | 说明 |
|---|---|
args
|
标签名、多个标签名、标签名的可迭代对象、正则表达式、函数,或元素属性字典。留空表示选择全部。
类型:
|
kwargs
|
用于过滤元素的属性。
类型:
|
| 返回 | 说明 |
|---|---|
Optional[Selector]
|
元素的 |
源代码位于 scrapling/parser.py
save
¶
将元素的独特属性保存到存储中,供之后读取和重新定位。
| 参数 | 说明 |
|---|---|
element
|
要保存的元素本身,可以是
类型:
|
identifier
|
以后从存储中读取元素时使用的标识。更多信息请查看文档。
类型:
|
源代码位于 scrapling/parser.py
retrieve
¶
根据标识搜索存储,并返回元素的独特属性。
| 参数 | 说明 |
|---|---|
identifier
|
从存储中读取元素时使用的标识。更多信息请查看文档。
类型:
|
| 返回 | 说明 |
|---|---|
Optional[Dict[str, Any]]
|
包含独特属性的字典。 |
源代码位于 scrapling/parser.py
json
¶
如果响应可以解析为 JSON,则返回解析结果,否则抛出错误。
源代码位于 scrapling/parser.py
re
¶
对当前文本应用给定的正则表达式,并返回包含匹配字符串的列表。
| 参数 | 说明 |
|---|---|
regex
|
可以是编译后的正则表达式,也可以是字符串。 |
replace_entities
|
启用后,将字符实体引用替换为对应字符。
类型:
|
clean_match
|
启用后,匹配时会忽略所有空白及连续空格。
类型:
|
case_sensitive
|
关闭后,编译正则表达式时会忽略大小写。
类型:
|
源代码位于 scrapling/parser.py
re_first
¶
对文本应用给定的正则表达式,并返回第一个匹配结果。如果没有,则返回默认值。
| 参数 | 说明 |
|---|---|
regex
|
可以是编译后的正则表达式,也可以是字符串。 |
default
|
没有匹配结果时返回的默认值。
默认值:
|
replace_entities
|
启用后,将字符实体引用替换为对应字符。
类型:
|
clean_match
|
启用后,匹配时会忽略所有空白及连续空格。
类型:
|
case_sensitive
|
关闭后,编译正则表达式时会忽略大小写。
类型:
|
源代码位于 scrapling/parser.py
find_similar
¶
查找页面树中深度相同、标签名相同、父元素标签名相同等条件一致的元素,然后返回与当前元素的属性匹配度高于指定阈值的元素。
此函数受 AutoScraper 启发。例如,在商品列表容器中找到一个商品 div 后,可以以它为起点查找其他商品。不过,此函数不限于这种场景,也不依赖元素类型。
| 参数 | 说明 |
|---|---|
similarity_threshold
|
比较元素属性时使用的百分比。注意:在比较属性前,找到的元素已经具有相同深度、相同标签名,以及相同的父元素和祖父元素标签名。因此,除非特别不巧,它们有 99% 的可能已经正确。之后才会比较属性,所以只有结果不符合预期时才应调整此值。如果当前元素和相似元素都没有属性,则视为 100% 匹配。
类型:
|
ignore_attributes
|
在最后一步比较属性时,忽略指定的属性名。默认忽略
类型:
|
match_text
|
为 True 时,将元素文本内容也纳入匹配计算。通常不建议启用,但可以根据情况选择。
类型:
|
| 返回 | 说明 |
|---|---|
Selectors
|
一个 |
源代码位于 scrapling/parser.py
find_by_text
¶
查找文本内容与输入完全或部分匹配的元素。
| 参数 | 说明 |
|---|---|
text
|
要匹配的查询文本。
类型:
|
first_match
|
返回第一个符合条件的元素,默认启用。
类型:
|
partial
|
启用后,返回包含输入文本的元素。
类型:
|
case_sensitive
|
启用后区分大小写。
类型:
|
clean_match
|
启用后,匹配时会忽略所有空白及连续空格。
类型:
|
源代码位于 scrapling/parser.py
find_by_regex
¶
查找文本匹配指定正则表达式的元素。
| 参数 | 说明 |
|---|---|
query
|
用于匹配的正则表达式。 |
first_match
|
只返回第一个满足条件的元素,默认开启。
类型:
|
case_sensitive
|
启用后,正则表达式区分大小写。
类型:
|
clean_match
|
启用后,匹配时忽略所有空白字符和连续空格。
类型:
|