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

如何仅将网页URL写入TXT文件?解决写入HTML内容的异常问题

解决方法:仅提取并写入URL到TXT文件

你的代码存在两个核心问题:

  1. 定义了urls = []列表,但没有把遍历到的URL存入其中,只是做了打印输出;
  2. 后续将urls变量重新赋值为文件对象,最终写入的是整个soup对应的HTML内容,而非目标URL列表。

以下是修正后的代码:

import requests
from bs4 import BeautifulSoup

headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'}

url = 'https://www.snapdeal.com/'
reqs = requests.get(url, headers=headers)
soup = BeautifulSoup(reqs.text, 'html.parser')

# 收集有效URL,过滤空链接
urls = []
for link in soup.find_all('a'):
    href = link.get('href')
    if href:  # 跳过无href属性的a标签
        # 可选:将相对路径转为完整绝对URL
        # if not href.startswith('http'):
        #     href = requests.compat.urljoin(url, href)
        urls.append(href)
        print(href)

# 写入URL到TXT文件
file_path = r'/run/user/759001103/gvfs/smb-share:server=192.168.0.112,share=corporate%20share/Corporate Share/Systems and Infrastructure/Engineering/jbot tests/multicats.txt'
with open(file_path, "w") as f:
    # 每个URL单独占一行
    f.write('\n'.join(urls))

关键修改说明:

  • 新增了将href存入urls列表的逻辑,并过滤掉空链接,避免无效内容写入;
  • 使用with语句管理文件操作,无需手动调用close(),更安全可靠;
  • 通过'\n'.join(urls)将列表中的URL用换行符拼接,保证写入文件后每个URL单独一行;
  • 注释中提供了将相对路径转为绝对URL的可选逻辑,若页面存在非完整路径的链接可启用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 04:55:27