DeepSeek高效抓取:扣子代码节点,新闻批量提炼,飞书一键导出

AI前言4周前发布 yizz
2,839 0 0
广告也精彩

如何使用 DeepSeek 和扣子代码节点批量抓取和提炼新闻?,,#新闻抓取

1. 为什么要用 DeepSeek 和扣子代码节点抓取新闻?,,#行业新闻

在日常生活中,我们经常需要获取最新的行业新闻,例如每天收到的行业新闻邮件。手动抓取和整理新闻既耗时又容易出错。通过 DeepSeek 生成代码,结合 扣子 平台,我们可以实现自动批量抓取新闻并进行提炼,大大提高效率。

2. 如何利用 DeepSeek 和扣子实现新闻抓取的工作流?,,#飞书多维表

2.1 工作流的整体目标,,#数据导出

我们的目标是:自动批量抓取新闻,进行提炼后导出到飞书多维表。例如,抓取 网易上海频道 的最新新闻,提取关键信息,并将其整理到飞书多维表中。

2.2 工作流的具体步骤,,#网页读取

  1. 数据抓取:从 网易上海频道 抓取新闻数据。
  2. 数据格式转换:使用 扣子代码节点,将抓取到的不规则数据(包含非新闻条目和多种新闻条目格式)整理为仅包含标题(title) 与新闻链接(link) 两项内容的数据
  3. 网页读取与提炼:利用网页读取插件处理提取出的新闻链接。
  4. 数据导出:将提取的时间、新闻标题、新闻链接以及新闻总结导出到 飞书多维表格
    • 可以进一步扩展,例如定时发送邮件或在微信群中自动定时发送。

2.3 飞书多维表的准备,,#授权

在开始工作流之前,需要在 飞书 中创建一个多维表,并包含以下字段:

  • 提取时间
  • 新闻标题
  • 新闻链接
  • AI 提炼

同时,在 扣子 工作流调试时,需要对此 飞书多维表 进行授权。

3. 如何配置扣子代码节点提取新闻链接和标题?,,#调试

3.1 核心思路,,#示例调试

核心思路是:让 AI 学习扣子平台规则 – 提出我的要求 – 提供示例 – 进行调试 – 上线

3.2 让 DeepSeek 学习扣子平台规则,,#参数说明

首先,从 代码节点 中的编辑器复制 扣子平台代码示例,让 DeepSeek 了解平台的规则。

python

在这里,您可以通过 ‘args’ 获取节点中的输入变量,并通过 ‘ret‘ 输出结果

‘args’ 和 ‘ret’ 已经被正确地注入到环境中

下面是一个示例,首先获取节点的全部输入参数params,其次获取其中参数名为‘input’的值:

params = args.params;

input = params.input;

下面是一个示例,输出一个包含多种数据类型的 ‘ret’ 对象:

ret: Output = { “name”: ‘小明’, “hobbies”: [“看书”, “旅游”] };

async def main(args: Args) -> Output:
params = args.params
# 构建输出对象
ret: Output = {
“key2”: { # 输出一个Object
“key21”: “hi”
},
}
return ret

代码解释:

  • args:用于获取节点中的输入变量。
  • ret:用于输出结果。
  • params = args.params:获取所有输入参数。
  • input = params.input:获取名为 input 的参数值。

3.3 明确输出要求,,#标题链接提取

明确我们的输出要求:基于以上代码帮我写段代码,我的输入变量名是input,变量类型是string。我需要提取里面的标题和link,最终输出的变量名是output,变量类型是Array,里面包含两个变量 title和link,类型是string

3.4 提供输入示例并明确处理要求,,#链接提取

提供输入示例,并明确处理要求,例如:

需要注意的点:

  • 处理时忽略示例数据前面的信息。
  • 确保链接部分只包含 URL,不包含括号。
  • 限制处理新闻条数,例如最多处理 10 条。

3.5 调试代码,,#数据校正

调试过程中可能会遇到各种问题,例如 代码节点报错工作流结果有问题

  • 代码节点报错:将错误信息复制到 DeepSeek,让其重新生成代码。
  • 工作流结果有问题:提供更多的输入信息或明确更多的要求,例如提供不是新闻的数据或完整的数据条目。

3.6 最终代码示例,,#数据清洗

以下是一个可能的最终代码示例:

python
import re
from typing import List, Dict

async def main(args: Args) -> Output:
params = args.params
input_text = params.get(‘input’, ”) if isinstance(params, dict) else ”

# 第一步:分割所有可能的新闻条目
raw_items = re.split(r'\n\s*\*?\s*\[!\[', input_text)[1:]  # 以图片标记分割
output = []
seen_links = set()

for raw_item in raw_items:
    if len(output) >= 10:
        break

    # 第二步:提取图片描述
    img_desc_match = re.match(r'([^\]]*)\]\([^)]*\)', raw_item)
    if not img_desc_match:
        continue
    img_desc = img_desc_match.group(1).strip()
    remaining = raw_item[img_desc_match.end():]

    # 第三步:尝试匹配格式1(直接链接)
    format1_match = re.match(r'\]\(([^)]*)\)', remaining)
    if format1_match and '163.com/dy/article/' in format1_match.group(1):
        link = format1_match.group(1).strip()
        output.append({
            "title": img_desc,
            "link": link
        })
        continue

    # 第四步:尝试匹配格式2(带标题和分隔线)
    format2_match = re.match(
        r'\n\s*([^\n]+?)\s*\n\s*-+\s*\]\(([^)]*)\)',
        remaining,
        re.DOTALL
    )
    if format2_match and '163.com/dy/article/' in format2_match.group(2):
        title = format2_match.group(1).strip()
        link = format2_match.group(2).strip()
        if link not in seen_links:
            seen_links.add(link)
            output.append({
                "title": title,
                "link": link
            })

ret: Output = {
    "output": output[:10]
}
return ret

代码解释:

  1. 分割新闻条目:使用 正则表达式 re.split(r'\n\s*\*?\s*\[!\[', input_text)[1:] 将输入文本分割成多个可能的新闻条目。
  2. 提取图片描述:使用 正则表达式 re.match(r'([^\]]*)\]\([^)]*\)', raw_item) 提取新闻标题。
  3. 匹配链接格式:尝试匹配两种不同的链接格式,提取链接和标题。
  4. 数据清洗:确保链接只包含 URL,并限制处理的新闻条数。

4. 总结与感悟

整个调试过程,也是一个不断互相学习的过程。DeepSeek 学习我的思维方式,我也在通过 DeepSeek 给出的东西学习怎么能让它更懂我想要什么。

我认为:所谓AI,不过是工具耳。用之正则事半功倍,弃之则徒增烦恼。关键不在于AI之能,而在于使用者之慧。如同庖丁解牛,利器在手,更需胸有成竹,方能游刃有余。若无明确目标,纵有神兵利器,亦难成事。
,,,

© 版权声明
chatgpt4.0

相关文章

error: Content is protected !!