3.9 KiB
3.9 KiB
Documentation
- Class name: LLMSaltWebCrawler
- Category: SALT/Language Toolkit/Tools
- Output node: False
LLMSaltWebCrawler节点是为网络爬虫和数据抓取而设计的,能够在网页间导航以收集数据。它支持深度控制、域名排除、SSL验证和基于关键词的相关性过滤等功能,以高效地从指定URL收集和解析内容。
Input types
Required
Optional
- url
- 网络爬虫的起始URL。它对定义爬虫范围至关重要,并作为爬虫过程的入口点。
- Comfy dtype: STRING
- Python dtype: str
- urls
- 要爬取的URL列表。这允许多个入口点,扩大了爬取的广度。
- Comfy dtype: LIST
- Python dtype: list
- max_depth
- 定义爬虫应从起始URL导航的深度。它将爬取限制在指定的深度,以管理范围和资源。
- Comfy dtype: INT
- Python dtype: int
- max_links
- 限制每页要跟随的链接数量,控制收集的数据量并管理资源使用。
- Comfy dtype: INT
- Python dtype: int
- trim_line_breaks
- 一个标志,用于指示是否从爬取过程中提取的文本中删除换行符,有助于数据清洁。
- Comfy dtype: BOOLEAN
- Python dtype: bool
- verify_ssl
- 决定在发出请求时是否验证SSL证书,通过避免潜在的有害站点来增强安全性。
- Comfy dtype: BOOLEAN
- Python dtype: bool
- exclude_domains
- 指定要从爬取中排除的域名,通过避免不相关或不需要的站点来允许更有针对性的数据收集。
- Comfy dtype: STRING
- Python dtype: str
- keywords
- 用于基于相关性过滤内容的关键词列表,确保收集的数据与特定兴趣或主题相关。
- Comfy dtype: STRING
- Python dtype: str
Output types
- documents
- Comfy dtype: DOCUMENT
- 输出是文档列表,每个文档包含从爬取的网页中获取的结构化数据,包括URL、标题、文本和找到的链接,组织得便于处理和分析。
- Python dtype: list
Usage tips
- Infra type:
CPU - Common nodes: unknown
Source code
class LLMSaltWebCrawler:
@classmethod
def INPUT_TYPES(cls):
return {
"required": {},
"optional": {
"url": ("STRING", {}),
"urls": ("LIST", {}),
"max_depth": ("INT", {"min": 1, "max": 4, "default": 2}),
"max_links": ("INT", {"min": 1, "max": 6, "default": 2}),
"trim_line_breaks": ("BOOLEAN", {"default": True}),
"verify_ssl": ("BOOLEAN", {"default": True}),
"exclude_domains": ("STRING", {"multiline": True, "dynamicPrompts": False, "placeholder": "Optional exclude domains, eg: example.com, example2.com"}),
"keywords": ("STRING", {"multiline": True, "dynamicPrompts": False, "placeholder": "Optional relevancy keywords, eg: artificial intelligence, ai"})
}
}
RETURN_TYPES = ("DOCUMENT",)
RETURN_NAMES = ("documents",)
FUNCTION = "crawl"
CATEGORY = f"{MENU_NAME}/{SUB_MENU_NAME}/Tools"
def crawl(self, url:str="google.com", urls:list=None, max_depth:int=2, max_links:int=2, trim_line_breaks:bool=True, verify_ssl:bool=True, exclude_domains:str="", keywords:str="") -> list:
search_urls = []
if not url.strip() and not urls:
raise Exception("Please provide at lease one URL")
url = url.strip()
if url != "" and valid_url(url):
search_urls.append(url)
if urls:
search_urls.extend([url for url in urls if valid_url(url)])
logger.info("Valid URLs:")
logger.info(search_urls)
crawler = WebCrawler(search_urls, exclude_domains=exclude_domains, relevancy_keywords=keywords, max_links=max_links)
results = crawler.parse_sites(crawl=True, max_depth=max_depth, trim_line_breaks=trim_line_breaks, verify_ssl=verify_ssl)
return (results.to_documents(), )