Dify工作流教程|以抓取网页并更新知识库为例详细讲解工作流编排过程(附DSL文件)

作者:超人阿亚

来源:公众号:dify实验室

1、系统背景

    你不会还在用书签管理自己的文章吧。有没有很痛苦,明明添加书签的网页,当你想阅读的时候,总是找不到或者好不容易找到了,发现网页404了。如果有个小工具,直接能把你输入的链接内容抓取下来,并且加入到你的知识库中,你说他香不香。

2、需求分析

    核心需求分析

    网页抓取,通过蜘蛛抓取网页内容、解析出网页标题和内容、调用知识库接口存入个人知识库。

3、流程设计

    

图片

4、网页抓取

使用Firecrawl 工具,在工具中找到Firecrawl,点击单页面抓取,添加到画布。

图片

首次使用需要授权。点击获取按钮,按照帮助说明,获取API密钥。

图片

无法获取授权的,也可以使用网页抓取工具,这个是免费的,抓取效果也可以。

图片

5、参数提取

使用参数提取器,提取网页标题和内容,新增两个提取参数,分别为title、content

图片

6、构造http请求,更新知识库

使用http请求节点,请求知识库API。

6.1 创建API秘钥。创建成功后,我们把他保存下来。

图片

6.2 创建一个知识库,后续将文章存入到哪个知识库中,就可以创建这个知识库。

图片

6.3 获取知识库的id

方法1,使用浏览器抓包。具体方法为,点击进入到这个知识库,右键-检查,刷新页面,然后找到 documents?page=1&limit=10&keyword=,点击后如下图。红框中的即为当前知识库的id,把他保存下来,后面会用到。

    

图片

方法2,构造请求,使用知识库API接口获取知识库id

get  http://host.docker.internal/v1/datasets?page=1&limit=20,配置好识库的APIkey。点击运行此步骤。获得知识库id,有多个知识库时,请根据name来判断。

图片

6.4构造请求, 更新知识库内容

API:

post http://host.docker.internal/v1/datasets/{你的知识库id}/document/create-by-text

HEADERS:

Content-Type : application/json

BODY-raw:

{"name": "{新建的title变量}","text": "新建的content变量","indexing_technique": "high_quality","process_rule": {"mode": "automatic"}}

7、http请求节点常见报错处理

 a、 报错内容为:

     Reached maximum retries (0) for URL http://localhost/v1/datasets/2bf8fe54-cc73-4864-8e9f-215a33851a65/document/create-by-text

         解决方案:将localhost替换为 host.docker.internal

     原因 当 Dify 需要访问宿主机上运行的服务(如数据库、API 或其他依赖服务)时,必须通过宿主机的真实 IP 进行通信。host.docker.internal 是 Docker 提供的特殊 DNS 名称,自动映射到宿主机的内部 IP。

b、Request failed with status code 400

         解决方案:检查请求方式、构造的参数是否正确,往往是构造参数错误导致的。

c、"status_code": 400,

  "body": "{\"code\": \"bad_request\", \"message\": \"The browser (or proxy) sent a request that this server could not understand.\", \"status\": 400}\n"

      解决方案:检查输入的文本中是否包含/n  /p / 等特殊字符,需要将特殊字符去掉,或者转义。

8、改进余地

    这个工作流还可以继续改进,例如加入 问题分类器 节点,判断网页知识的内容类型,以存入到不同的知识库中。

获取DSL文件(微信公众号:dify实验室)

   DSL文件分享公众号回复 DSL ,获取工作流DSL文件。目前我建立了一个dify学习交流群。可以在微信公众号回复 入群,我拉你进群。

### Dify 工作流实现网页抓取方法 Dify 不是一个专门用于网页抓取的工具,但从所提供的功能来看,可以推测其工作流能够集成多种自动化组件来完成复杂的任务,包括但不限于网页抓取。为了利用 Dify 实现网页抓取工作流,通常会结合其他具备强大抓取能力的技术或平台,比如 Firecrawl。 #### 集成 Firecrawl 进行数据获取 考虑到 Firecrawl 提供了一套可以在抓取前后对页面进行操作的功能[^1],这使得它非常适合处理那些需要通过模拟用户行为(如点击、填写表单、滚动页面)才能访问到的数据源。因此,在构建基于 Dify网页抓取流程时,可以选择将 Firecrawl 作为主要的数据采集器。 ```python from firecrawl import Crawler def setup_firecrawl(): crawler = Crawler() # 设置目标URL和其他配置项 crawler.set_target_url('http://example.com') crawler.configure({ 'click_elements': True, 'fill_forms': True, 'scroll_pages': True }) return crawler ``` #### 自定义工作流逻辑 一旦完成了初始设置启动了 Firecrawl 来收集所需的信息之后,就可以依靠 Dify 的灵活性来自定义后续的操作步骤。如: - **解析与存储**:提取特定结构化信息将它们保存至数据库或其他持久化介质; - **生成内容**:依据已获得的数据自动生成社交媒体帖子等内容片段; - **监控反馈循环**:持续跟踪新发布的资源更新情况,据此调整策略。 ```json { "workflow": { "name": "Web Scraping with Dify", "steps": [ {"action": "setup_firecrawl"}, {"action": "parse_and_store_data"}, {"action": "generate_content"} ] } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值