langchain_community.document_loaders.recursive_url_loader.RecursiveUrlLoader

class langchain_community.document_loaders.recursive_url_loader.RecursiveUrlLoader(url: str, max_depth: Optional[int] = 2, use_async: Optional[bool] = None, extractor: Optional[Callable[[str], str]] = None, metadata_extractor: Optional[Union[Callable[[str, str], dict], Callable[[str, str, Union[Response, ClientResponse]], dict]]] = None, exclude_dirs: Optional[Sequence[str]] = (), timeout: Optional[int] = 10, prevent_outside: bool = True, link_regex: Optional[Union[str, Pattern]] = None, headers: Optional[dict] = None, check_response_status: bool = False, continue_on_failure: bool = True, *, base_url: Optional[str] = None, autoset_encoding: bool = True, encoding: Optional[str] = None)[source]

从URL页面加载所有子链接。

安全提示 :此加载器是一个爬虫,将从给定的URL开始爬取,然后扩展到递归爬取子链接。

Web爬虫通常不应该部署具有对任何内部服务器的网络访问权限。

控制谁可以提交爬取请求以及爬虫具有什么网络访问权限。

在爬取过程中,爬虫可能会遇到恶意URL,这可能导致服务器端请求伪造(SSRF)攻击。

为了降低风险,默认情况下,爬虫只会加载与起始URL相同域的URL(通过prevent_outside命名参数控制)。

这将降低SSRF攻击的风险,但不会完全消除。

例如,如果爬取托管了几个站点的主机:

https://some_host/alice_site/ https://some_host/bob_site/

Alice站点上的恶意URL可能导致爬虫向Bob站点的端点发出恶意GET请求。由于这两个站点托管在同一主机上,因此默认情况下不会阻止这样的请求。

请参阅 https://python.langchain.com/docs/security

初始化爬取的URL和要排除的任何子目录。

参数:

url: 要爬取的URL。 max_depth: 递归加载的最大深度。 use_async: 是否使用异步加载。

如果为True,则此函数不会是懒加载,但仍会按预期方式工作,只是不是懒加载。

extractor: 从原始HTML中提取文档内容的函数。

当提取函数返回空字符串时,将忽略该文档。

metadata_extractor: 从原始HTML、源URL和requests.Response/aiohttp.ClientResponse对象提取元数据的函数

(按照这个顺序的参数)。 默认提取器将尝试使用BeautifulSoup4来提取页面的标题、描述和语言。 ..code-block:: python

import requests import aiohttp

def simple_metadata_extractor(

raw_html: str, url: str, response: Union[requests.Response, aiohttp.ClientResponse]

) -> dict:

content_type = getattr(response, “headers”).get(“Content-Type”, “”) return {“source”: url, “content_type”: content_type}

exclude_dirs: 要排除的子目录列表。 timeout: 请求超时时间,单位为秒。如果为None,则连接不会超时。 prevent_outside: 如果为True,则阻止从不是根URL的子URL加载。 link_regex: 从网页的原始HTML中提取子链接的正则表达式。 check_response_status: 如果为True,则检查HTTP响应状态并跳过具有错误响应(400-599)的URL。 continue_on_failure: 如果为True,则在获取或解析链接时出现异常时继续。否则,引发异常。 base_url: 用于检查外部链接的基本URL。 autoset_encoding: 是否自动设置响应的编码。

如果为True,则响应的编码将设置为明显的编码,除非已经显式设置了`encoding`参数。

encoding: 响应的编码。如果手动设置,编码将设置为给定值,而不管`autoset_encoding`参数如何。

Methods

__init__(url[, max_depth, use_async, ...])

初始化爬取的URL和要排除的任何子目录。

alazy_load()

一个用于文档的惰性加载器。

aload()

将数据加载到文档对象中。

lazy_load()

延迟加载网页。 当use_async为True时,此函数将不再是延迟加载的, 但它仍将按预期方式工作,只是不再是延迟加载。

load()

将数据加载到文档对象中。

load_and_split([text_splitter])

加载文档并分割成块。块作为文档返回。

Parameters
  • url (str) –

  • max_depth (Optional[int]) –

  • use_async (Optional[bool]) –

  • extractor (Optional[Callable[[str], str]]) –

  • metadata_extractor (Optional[_MetadataExtractorType]) –

  • exclude_dirs (Optional[Sequence[str]]) –

  • timeout (Optional[int]) –

  • prevent_outside (bool) –

  • link_regex (Union[str, re.Pattern, None]) –

  • headers (Optional[dict]) –

  • check_response_status (bool) –

  • continue_on_failure (bool) –

  • base_url (Optional[str]) –

  • autoset_encoding (bool) –

  • encoding (Optional[str]) –

Return type

None

__init__(url: str, max_depth: Optional[int] = 2, use_async: Optional[bool] = None, extractor: Optional[Callable[[str], str]] = None, metadata_extractor: Optional[Union[Callable[[str, str], dict], Callable[[str, str, Union[Response, ClientResponse]], dict]]] = None, exclude_dirs: Optional[Sequence[str]] = (), timeout: Optional[int] = 10, prevent_outside: bool = True, link_regex: Optional[Union[str, Pattern]] = None, headers: Optional[dict] = None, check_response_status: bool = False, continue_on_failure: bool = True, *, base_url: Optional[str] = None, autoset_encoding: bool = True, encoding: Optional[str] = None) None[source]

初始化爬取的URL和要排除的任何子目录。

参数:

url: 要爬取的URL。 max_depth: 递归加载的最大深度。 use_async: 是否使用异步加载。

如果为True,则此函数不会是懒加载,但仍会按预期方式工作,只是不是懒加载。

extractor: 从原始HTML中提取文档内容的函数。

当提取函数返回空字符串时,将忽略该文档。

metadata_extractor: 从原始HTML、源URL和requests.Response/aiohttp.ClientResponse对象提取元数据的函数

(按照这个顺序的参数)。 默认提取器将尝试使用BeautifulSoup4来提取页面的标题、描述和语言。 ..code-block:: python

import requests import aiohttp

def simple_metadata_extractor(

raw_html: str, url: str, response: Union[requests.Response, aiohttp.ClientResponse]

) -> dict:

content_type = getattr(response, “headers”).get(“Content-Type”, “”) return {“source”: url, “content_type”: content_type}

exclude_dirs: 要排除的子目录列表。 timeout: 请求超时时间,单位为秒。如果为None,则连接不会超时。 prevent_outside: 如果为True,则阻止从不是根URL的子URL加载。 link_regex: 从网页的原始HTML中提取子链接的正则表达式。 check_response_status: 如果为True,则检查HTTP响应状态并跳过具有错误响应(400-599)的URL。 continue_on_failure: 如果为True,则在获取或解析链接时出现异常时继续。否则,引发异常。 base_url: 用于检查外部链接的基本URL。 autoset_encoding: 是否自动设置响应的编码。

如果为True,则响应的编码将设置为明显的编码,除非已经显式设置了`encoding`参数。

encoding: 响应的编码。如果手动设置,编码将设置为给定值,而不管`autoset_encoding`参数如何。

Parameters
  • url (str) –

  • max_depth (Optional[int]) –

  • use_async (Optional[bool]) –

  • extractor (Optional[Callable[[str], str]]) –

  • metadata_extractor (Optional[Union[Callable[[str, str], dict], Callable[[str, str, Union[Response, ClientResponse]], dict]]]) –

  • exclude_dirs (Optional[Sequence[str]]) –

  • timeout (Optional[int]) –

  • prevent_outside (bool) –

  • link_regex (Optional[Union[str, Pattern]]) –

  • headers (Optional[dict]) –

  • check_response_status (bool) –

  • continue_on_failure (bool) –

  • base_url (Optional[str]) –

  • autoset_encoding (bool) –

  • encoding (Optional[str]) –

Return type

None

async alazy_load() AsyncIterator[Document]

一个用于文档的惰性加载器。

Return type

AsyncIterator[Document]

async aload() List[Document]

将数据加载到文档对象中。

Return type

List[Document]

lazy_load() Iterator[Document][source]

延迟加载网页。 当use_async为True时,此函数将不再是延迟加载的, 但它仍将按预期方式工作,只是不再是延迟加载。

Return type

Iterator[Document]

load() List[Document]

将数据加载到文档对象中。

Return type

List[Document]

load_and_split(text_splitter: Optional[TextSplitter] = None) List[Document]

加载文档并分割成块。块作为文档返回。

不要覆盖此方法。应该被视为已弃用!

参数:
text_splitter: 用于分割文档的TextSplitter实例。

默认为RecursiveCharacterTextSplitter。

返回:

文档列表。

Parameters

text_splitter (Optional[TextSplitter]) –

Return type

List[Document]

Examples using RecursiveUrlLoader