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

Python爬虫仅解析URL列表最后一项的问题及改进需求

问题解决:遍历所有URL并解析提取信息

原代码的核心问题是请求和解析逻辑在for循环之外,循环仅不断覆盖url变量,最终只处理列表中的最后一个URL。以下是修复后的代码及关键说明:

修复后代码

import requests
from bs4 import BeautifulSoup


def news(): 
    # 使用with语句自动管理文件资源,避免手动关闭
    with open('list.txt', 'r') as linksFile:
        linksList = linksFile.readlines()
    
    # 打开输出文件,追加模式写入
    with open("Websites.txt", "a") as f:
        for link in linksList:
            # 去除URL中的换行符、首尾空白,避免请求无效地址
            url = link.strip()
            if not url:  # 跳过空行
                continue
            
            try:
                # 发送GET请求,主动抛出HTTP错误
                resp = requests.get(url)
                resp.raise_for_status()
                
                print(f"成功打开网页: {url}") 
                print(f"正在处理 {url} 的内容...") 
                
                soup = BeautifulSoup(resp.text, 'html.parser')     
                # 定位目标div容器
                target_div = soup.find("div", {"class": "m-exhibitor-entry__item__body__contacts__additional__website"})
                
                if target_div:
                    # 遍历所有a标签,提取有效文本并写入
                    for a_tag in target_div.findAll("a"):
                        website_text = a_tag.text.strip()
                        if website_text:
                            f.write(website_text + "\n")
                    print(f"{url} 的内容已成功保存\n")
                else:
                    print(f"{url} 未找到目标内容区域\n")
                    
            except requests.exceptions.RequestException as e:
                print(f"访问 {url} 出错: {str(e)}\n")


news()

关键修改说明

  • 循环逻辑调整:将请求、解析、写入的全部逻辑移入for link in linksList循环内部,确保每个URL都被依次处理
  • URL格式清理:用strip()去除读取时附带的换行符和空白字符,避免请求https://xxx.com\n这类无效地址
  • 资源安全管理:全程使用with语句操作文件,无需手动调用close(),防止资源泄漏
  • 异常容错处理:捕获请求过程中的网络错误、HTTP状态错误,避免单个URL失败导致整个程序崩溃
  • 空值过滤:跳过空行和空文本内容,避免写入无效数据
  • 状态提示优化:增加每个URL的处理日志,方便追踪执行进度

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 18:57:36