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

Python如何避免重复写入已存在的Instagram链接到文本文件?

解决Instagram用户名URL重复写入的问题

你现在的需求是验证Instagram用户名对应的URL是否存在,同时避免把已经在文本文件里的URL重复写进去。先指出原代码里的几个问题:

  • 用'w'模式打开文件会直接清空原有内容,不符合保留历史数据的需求
  • 直接调用write(url)会报错,因为url是列表类型,write仅接受字符串参数
  • 未做去重判断,重复的用户名会被重复写入

下面是调整后的完整代码,核心逻辑是先读取文件中已有的URL存入集合(集合的查重效率远高于列表),每次检测到有效的URL时,先判断是否已存在于集合中,只有不存在时才写入文件:

import requests

# 定义目标文件路径
file_path = "dictionaries/insta.txt"

# 读取已存在的URL,存入集合用于快速查重
existing_urls = set()
try:
    with open(file_path, 'r', encoding="utf-8") as f:
        # 逐行读取并去除换行符,过滤空行
        existing_urls = {line.strip() for line in f if line.strip()}
except FileNotFoundError:
    # 如果文件不存在,初始化空集合,后续追加写入时会自动创建文件
    pass

# 待检测的用户名列表
cli = ['duolingo', 'ryanair', 'mcguinness.paddy', 'duolingodeutschland', 'duolingobrasil']

# 以追加模式打开文件,保留原有内容
with open(file_path, 'a', encoding="utf-8") as insta_url_file:
    for username in cli:
        target_url = f"https://www.instagram.com/{username}/"
        try:
            # 发送请求并设置超时,避免长时间阻塞
            r = requests.get(target_url, timeout=10)
            # 更可靠的有效性判断:状态码为200且未被重定向到登录页
            # 原代码通过编码判断的方式不稳定,存在误判可能
            if r.status_code == 200 and "/accounts/login/" not in r.url:
                output_line = f"instagram.com/{username}/"
                # 检查是否已存在,不存在则写入并更新集合
                if output_line not in existing_urls:
                    insta_url_file.write(output_line + "\n")
                    existing_urls.add(output_line)
                    print(f"已写入: {output_line}")
                else:
                    print(f"已存在,跳过: {output_line}")
            else:
                print(f"用户名不存在: {username}")
        except requests.exceptions.RequestException as e:
            print(f"请求异常({username}): {str(e)}")

关键优化点说明

  • 用try-except处理文件不存在的场景,避免程序报错终止
  • 使用集合存储已存在的URL,查重操作的时间复杂度为O(1),效率更高
  • 替换原有的有效性判断逻辑:通过状态码+URL检查替代编码判断,结果更准确
  • 用with语句管理文件资源,自动完成文件关闭,避免资源泄漏
  • 采用追加模式'a'打开文件,确保原有内容不会被清空

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 08:50:32