站点地图加载器#

class langchain_community.document_loaders.sitemap.SitemapLoader(web_path: str, filter_urls: List[str] | None = None, parsing_function: Callable | None = None, blocksize: int | None = None, blocknum: int = 0, meta_function: Callable | None = None, is_local: bool = False, continue_on_failure: bool = False, restrict_to_same_domain: bool = True, max_depth: int = 10, **kwargs: Any)[源代码]#

加载站点地图及其URL。

Security Note: This loader can be used to load all URLs specified in a sitemap.

如果恶意行为者获得了站点地图的访问权限,他们可以通过修改站点地图来强制服务器加载来自其他域的URL。这可能导致服务器端请求伪造(SSRF)攻击;例如,攻击者强制服务器加载来自内部服务端点的URL,这些端点通常不对外公开。虽然攻击者可能不会立即获得这些数据的访问权限,但这些数据可能会泄露到下游系统中(例如,数据加载器用于加载索引数据)。

此加载器是一个爬虫,通常不应部署为具有对任何内部服务器的网络访问权限。

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

默认情况下,如果站点地图不是本地文件,加载器将仅从与站点地图相同的域加载URL。可以通过将restrict_to_same_domain设置为False来禁用此功能(不推荐)。

如果站点地图是本地文件,默认情况下不会应用此类风险缓解措施。

使用filter URLs参数来限制可以加载的URL。

参见 https://python.langchain.com/docs/security

使用网页路径和可选的过滤URL进行初始化。

Parameters:
  • web_path (str) – 站点地图的URL。也可以是本地路径

  • filter_urls (List[str] | None) – 一个正则表达式列表。如果指定,只有匹配其中一个过滤URL的URL才会被加载。 警告 过滤URL被解释为正则表达式。如果不希望特殊字符被解释为正则表达式语法,请记得转义它们。例如,. 在URL中经常出现,如果希望匹配字面的 . 而不是任意字符,应该进行转义。 当 restrict_to_same_domain 为 True 且站点地图不是本地文件时,restrict_to_same_domain 优先于 filter_urls。

  • parsing_function (Callable | None) – 用于解析 bs4.Soup 输出的函数

  • blocksize (int | None) – 每个区块中的站点地图位置数量

  • blocknum (int) – 应该加载的块的编号 - 从零开始索引。 默认值:0

  • meta_function (Callable | None) – 用于解析bs4.Soup输出的元数据的函数 在设置此方法时,请记住如果您正在使用此字段,也要将metadata[“loc”]复制到metadata[“source”]

  • is_local (bool) – 站点地图是否为本地文件。默认值:False

  • continue_on_failure (bool) – 是否在加载URL时发生错误时继续加载站点地图,发出警告而不是引发异常。将此设置为True可以使加载器更加健壮,但也可能导致数据丢失。默认值:False

  • restrict_to_same_domain (bool) – 是否限制加载的URL与站点地图的域名相同。注意:仅当站点地图不是本地文件时,此设置才会生效!

  • max_depth (int) – 跟踪站点地图链接的最大深度。默认值:10

  • kwargs (Any)

属性

web_path

方法

__init__(web_path[, filter_urls, ...])

使用网页路径和可选的过滤URL进行初始化。

alazy_load()

异步从web_path中的URL(s)懒加载文本。

aload()

ascrape_all(urls[, parser])

异步获取所有URL,然后返回所有结果的soups。

fetch_all(urls)

以速率限制并发获取所有URL。

lazy_load()

加载站点地图。

load()

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

load_and_split([text_splitter])

加载文档并将其分割成块。

parse_sitemap(soup, *[, depth])

解析站点地图XML并加载到字典列表中。

scrape([parser])

从网页抓取数据并以BeautifulSoup格式返回。

scrape_all(urls[, parser])

获取所有URL,然后返回所有结果的soups。

__init__(web_path: str, filter_urls: List[str] | None = None, parsing_function: Callable | None = None, blocksize: int | None = None, blocknum: int = 0, meta_function: Callable | None = None, is_local: bool = False, continue_on_failure: bool = False, restrict_to_same_domain: bool = True, max_depth: int = 10, **kwargs: Any)[source]#

使用网页路径和可选的过滤URL进行初始化。

Parameters:
  • web_path (str) – 站点地图的URL。也可以是本地路径

  • filter_urls (List[str] | None) – 一个正则表达式列表。如果指定,只有匹配其中一个过滤URL的URL才会被加载。 警告 过滤URL被解释为正则表达式。如果不希望特殊字符被解释为正则表达式语法,请记得转义它们。例如,. 在URL中经常出现,如果希望匹配字面的 . 而不是任意字符,应该进行转义。 当 restrict_to_same_domain 为 True 且站点地图不是本地文件时,restrict_to_same_domain 优先于 filter_urls。

  • parsing_function (Callable | None) – 用于解析 bs4.Soup 输出的函数

  • blocksize (int | None) – 每个区块中的站点地图位置数量

  • blocknum (int) – 应该加载的块的编号 - 从零开始索引。 默认值:0

  • meta_function (Callable | None) – 用于解析bs4.Soup输出的元数据的函数 在设置此方法时,请记住如果您正在使用此字段,也要将metadata[“loc”]复制到metadata[“source”]

  • is_local (bool) – 站点地图是否为本地文件。默认值:False

  • continue_on_failure (bool) – 是否在加载URL时发生错误时继续加载站点地图,发出警告而不是引发异常。将此设置为True可以使加载器更加健壮,但也可能导致数据丢失。默认值:False

  • restrict_to_same_domain (bool) – 是否限制加载的URL与站点地图的域名相同。注意:仅当站点地图不是本地文件时,此设置才会生效!

  • max_depth (int) – 跟踪站点地图链接的最大深度。默认值:10

  • kwargs (Any)

async alazy_load() AsyncIterator[Document]#

从web_path中的URL异步懒加载文本。

Return type:

AsyncIterator[Document]

aload() List[Document]#

自版本0.3.14起已弃用:请参阅API参考以获取更新的用法:https://python.langchain.com/api_reference/community/document_loaders/langchain_community.document_loaders.web_base.WebBaseLoader.html 在langchain-community==1.0之前不会移除。

从web_path中的URL异步加载文本到Documents中。

Return type:

列表[文档]

async ascrape_all(urls: List[str], parser: str | None = None) List[Any]#

异步获取所有URL,然后返回所有结果的soups。

Parameters:
  • urls (列表[字符串])

  • parser (str | None)

Return type:

列表[任意类型]

async fetch_all(urls: List[str]) Any#

同时获取所有URL,并进行速率限制。

Parameters:

urls (列表[字符串])

Return type:

任何

lazy_load() Iterator[Document][source]#

加载站点地图。

Return type:

迭代器[文档]

load() list[Document]#

将数据加载到Document对象中。

Return type:

列表[Document]

load_and_split(text_splitter: TextSplitter | None = None) list[Document]#

加载文档并将其分割成块。块以文档形式返回。

不要重写此方法。它应该被视为已弃用!

Parameters:

text_splitter (可选[TextSplitter]) – 用于分割文档的TextSplitter实例。 默认为RecursiveCharacterTextSplitter。

Returns:

文档列表。

Return type:

列表[Document]

parse_sitemap(soup: Any, *, depth: int = 0) List[dict][source]#

解析站点地图XML并加载到字典列表中。

Parameters:
  • soup (Any) – BeautifulSoup 对象。

  • depth (int) – 当前站点地图的深度。默认值:0

Returns:

字典列表。

Return type:

列表[字典]

scrape(parser: str | None = None) Any#

从网页抓取数据并以BeautifulSoup格式返回。

Parameters:

parser (str | None)

Return type:

任何

scrape_all(urls: List[str], parser: str | None = None) List[Any]#

获取所有URL,然后返回所有结果的soups。

Parameters:
  • urls (列表[字符串])

  • parser (str | None)

Return type:

列表[任意类型]

使用 SitemapLoader 的示例