SpiderTool¶
描述¶
Spider 是最快的开源抓取器和爬虫,能够返回LLM-ready数据。它可以将任何网站转换为纯HTML、Markdown、元数据或文本,同时允许您使用AI进行自定义操作的爬取。
安装¶
要使用Spider API,您需要下载Spider SDK和crewai[tools] SDK:
示例¶
此示例展示了如何使用Spider工具使您的代理能够抓取和爬取网站。从Spider API返回的数据已经是LLM-ready的,因此无需进行任何清理。
from crewai_tools import SpiderTool
def main():
spider_tool = SpiderTool()
searcher = Agent(
role="Web Research Expert",
goal="从特定URL中查找相关信息",
backstory="一个擅长使用网络的专家级网络研究员",
tools=[spider_tool],
verbose=True,
)
return_metadata = Task(
description="抓取https://spider.cloud,限制为1,并启用元数据",
expected_output="spider.cloud的元数据和10字摘要",
agent=searcher
)
crew = Crew(
agents=[searcher],
tasks=[
return_metadata,
],
verbose=2
)
crew.kickoff()
if __name__ == "__main__":
main()
参数¶
api_key(字符串,可选):指定Spider API密钥。如果未指定,它会在环境变量中查找SPIDER_API_KEY。params(对象,可选):请求的可选参数。默认为{"return_format": "markdown"},以返回更适合LLM的网站内容格式。request(字符串):要执行的请求类型。可能的值有http、chrome和smart。使用smart默认执行HTTP请求,直到需要JavaScript渲染HTML。limit(整数):每个网站允许爬取的最大页面数。移除该值或设置为0以爬取所有页面。depth(整数):最大深度的爬取限制。如果为0,则不应用限制。cache(布尔值):使用HTTP缓存以加速重复运行。默认为true。budget(对象):包含路径和计数器的对象,用于限制页面数量,例如{"*":1}仅爬取根页面。locale(字符串):请求使用的语言环境,例如en-US。cookies(字符串):添加用于请求的HTTP cookies。stealth(布尔值):在无头chrome请求中使用隐身模式,以帮助防止被阻止。默认在chrome上为true。headers(对象):转发用于所有请求的HTTP头。该对象应为键值对的映射。metadata(布尔值):存储有关页面和内容的元数据。这可能有助于改进AI互操作性。默认为false,除非您已经存储了启用该配置的网站。viewport(对象):配置chrome的视口。默认为800x600。encoding(字符串):要使用的编码类型,如UTF-8、SHIFT_JIS等。subdomains(布尔值):允许包含子域名。默认为false。user_agent(字符串):为请求添加自定义HTTP用户代理。默认设置为随机代理。store_data(布尔值):确定是否应使用存储。如果设置,则优先于storageless。默认为false。gpt_config(对象):使用AI生成在爬取过程中要执行的操作。您可以为"prompt"传递一个数组以链式步骤。fingerprint(布尔值):在chrome中使用高级指纹。storageless(布尔值):防止为请求存储任何类型的数据,包括存储和AI向量嵌入。默认为false,除非您已经存储了网站。readability(布尔值):使用readability预处理内容以供阅读。这可能极大地改善LLM使用的内容。return_format(字符串):返回数据的格式。可能的值有markdown、raw、text和html2text。使用raw返回页面的默认格式,如HTML等。proxy_enabled(布尔值):为请求启用高性能高级代理,以防止在网络层面被阻止。query_selector(字符串):从标记中提取内容时使用的CSS查询选择器。full_resources(布尔值):爬取并下载网站的所有资源。request_timeout(整数):请求使用的超时时间。超时时间可以是5-60。默认为30秒。
run_in_background (布尔值):在后台运行请求。如果存储数据并希望触发对仪表板的爬取,则很有用。如果设置了storageless,则此选项无效。
```