如何遍历文本文件中的URL链接,筛选含指定关键词并分存文件?
没问题,我给你两种简单实用的解决方案,不管你习惯用Python写脚本还是直接用Shell命令,都能快速搞定你的需求:
方法一:Python脚本(跨平台通用)
这个脚本适合所有操作系统(Windows、Linux、macOS),逻辑清晰还方便后续修改关键词或者扩展功能:
# 定义需要检查的关键词列表,可按需添加或修改 target_keywords = ["2018", "2017"] # 用with语句打开文件,会自动处理文件关闭,避免资源泄漏 with open("mylinks.txt", "r", encoding="utf-8") as source_file, \ open("yes.txt", "w", encoding="utf-8") as yes_output, \ open("no.txt", "w", encoding="utf-8") as no_output: for line in source_file: # 去掉每行首尾的空格、换行符 cleaned_line = line.strip() # 跳过空行,避免无效处理 if not cleaned_line: continue # 提取URL内容(适配你的"URL = http://xxx"格式) if "URL = " in cleaned_line: url = cleaned_line.split("URL = ")[-1].strip() # 检查URL是否包含任意一个目标关键词 matches_keyword = any(keyword in url for keyword in target_keywords) if matches_keyword: yes_output.write(url + "\n") else: no_output.write(url + "\n")
使用步骤:
- 把上面的代码保存成
filter_urls.py文件 - 打开终端,切换到文件所在的目录
- 运行命令:
python filter_urls.py - 执行完成后,就能看到生成的
yes.txt和no.txt了
要是需要添加新关键词,直接修改target_keywords列表就行,比如改成["2018", "2017", "2019", "archive"]。
方法二:Shell命令(Linux/macOS/WSL快速处理)
如果你用的是Linux、macOS,或者Windows上的WSL(Windows子系统),用Shell命令可以不用写脚本,直接在终端执行就能完成:
# 提取包含2018或2017的URL到yes.txt,同时去掉"URL = "前缀 grep -E "(2018|2017)" mylinks.txt | sed 's/^URL = //' > yes.txt # 提取不包含关键词的URL到no.txt,同样去掉前缀 grep -vE "(2018|2017)" mylinks.txt | sed 's/^URL = //' > no.txt
命令解释:
grep -E "(2018|2017)":匹配包含2018或2017的行grep -vE:和上面相反,匹配不包含关键词的行sed 's/^URL = //':把每行开头的URL =字符串替换为空,只保留纯URL> yes.txt:把命令结果写入到yes.txt文件中
执行完这两条命令,分类好的文件就直接生成了,效率拉满。
内容的提问来源于stack exchange,提问作者Heitorado
相关产品推荐
相关产品推荐

