You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AppleScript嵌套循环问题:无法加载关键词获取URL链接及curl可行性咨询

嘿,我来帮你解决这个问题~先聊聊你的AppleScript为啥可能没达到预期,再给你讲讲纯用curl配合命令行工具怎么实现需求。

一、你的AppleScript问题排查与修复

从你给出的代码片段来看,大概率是这几个地方出了问题:

  • 读取KEYWORDS.txt时,没把整个文本按换行分割成单个关键词,导致构造的URL可能带了一堆换行或者整个文本串
  • 没有对关键词做URL编码,要是关键词里有空格、特殊字符,直接拼到URL里会导致请求无效
  • 后续提取链接的逻辑没写完,AppleScript本身处理HTML解析比较麻烦,通常得调用命令行工具来辅助

给你一个修正后的完整AppleScript示例,解决这些问题:

-- 获取脚本所在目录的POSIX路径,避免Finder路径的兼容性问题
set scriptPath to POSIX path of (path to me)
set scriptDir to text 1 thru ((offset of "/" in reverse of scriptPath) * -1) of scriptPath
set keywordsFile to scriptDir & "KEYWORDS.txt"

-- 读取关键词文件,按换行分割成单个关键词的列表
set keywordText to do shell script "cat " & quoted form of keywordsFile
set keywordList to paragraphs of keywordText

-- 遍历每个关键词处理
repeat with keyword in keywordList
    if keyword is not "" then -- 跳过空行
        -- 对关键词做URL编码,处理空格、特殊字符
        set encodedKeyword to do shell script "python3 -c 'import urllib.parse; print(urllib.parse.quote(\"" & keyword & "\"))'"
        set searchURL to "https://teespring.com/search?q=" & encodedKeyword
        
        -- 用curl抓取页面,再用grep+sed提取所有href链接
        set pageContent to do shell script "curl -s " & quoted form of searchURL
        set linkList to do shell script "echo " & quoted form of pageContent & " | grep -o 'href=\"[^\"\\\"]*\"' | sed 's/href=\"//; s/\"$//'"
        
        -- 把提取的链接追加到输出文件
        do shell script "echo '" & linkList & "' >> " & quoted form of (scriptDir & "extracted_links.txt")
        display dialog "提取*关键词*「" & keyword & "」的链接完成"
    end if
end repeat

这个脚本会自动读取同目录下的KEYWORDS.txt,按行拆分关键词,编码后构造合法的搜索URL,再用curl抓页面提取所有链接,最后保存到extracted_links.txt里。

二、纯curl命令行实现方案

当然可以只用curl配合常用的命令行工具(grep、sed)完成,甚至不需要AppleScript,写个shell脚本更轻量高效。操作步骤如下:

  • 先确保你的KEYWORDS.txt每行一个关键词,放在脚本同目录下
  • 创建一个名为extract_teespring_links.sh的文件,内容如下:
#!/bin/bash

# 定位脚本所在目录
SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd)
KEYWORDS_FILE="$SCRIPT_DIR/KEYWORDS.txt"
OUTPUT_FILE="$SCRIPT_DIR/extracted_links.txt"

# 清空输出文件(避免重复追加)
> "$OUTPUT_FILE"

# 逐行读取关键词处理
while IFS= read -r keyword; do
    if [[ -n "$keyword" ]]; then
        # URL编码关键词,处理特殊字符
        encoded_keyword=$(python3 -c "import urllib.parse; print(urllib.parse.quote('$keyword'))")
        search_url="https://teespring.com/search?q=$encoded_keyword"
        
        echo "正在处理*关键词*: $keyword"
        # 抓取页面→提取href→清理格式→过滤无效锚点链接
        curl -s "$search_url" | grep -o 'href="[^"]*"' | sed 's/href="//; s/"$//' | grep -v '^#' >> "$OUTPUT_FILE"
    fi
done < "$KEYWORDS_FILE"

echo "所有链接已提取到 $OUTPUT_FILE"
  • 给脚本加执行权限:chmod +x extract_teespring_links.sh
  • 直接运行:./extract_teespring_links.sh

如果你的系统里有urlencode命令,也可以把Python的编码部分换成encoded_keyword=$(urlencode "$keyword"),会更简洁。

内容的提问来源于stack exchange,提问作者GTO

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:18:48