如何将BeautifulSoup find_all('a')的结果转为完整链接列表?
问题解决方法
你的问题根本不是换行符的问题,而是没有用列表存储循环生成的每个链接——每次循环你都用单个变量覆盖之前的值,最后自然只剩最后一个链接。
修正后的代码
import requests from bs4 import BeautifulSoup # 发起请求 response = requests.get("http://www.kulugyminiszterium.hu/dtwebe/Irodak.aspx") # 初始化空列表存储所有完整链接 full_links = [] soup = BeautifulSoup(response.text, 'html.parser') for link in soup.find_all('a'): href = link.get('href') if href: # 跳过没有href属性的a标签,避免报错 # 拼接完整链接并处理空格 full_link = f"http://www.kulugyminiszterium.hu/dtwebe/{href}".replace(' ', '%20') full_links.append(full_link) print(full_link) # 打印所有链接列表 print("所有完整链接:") print(full_links) # 保存到txt文件 with open('完整链接列表.txt', 'w', encoding='utf-8') as f: for link in full_links: f.write(f"{link}\n")
关键修改点
- 新增
full_links = []空列表,专门用来存储每一个生成的完整链接 - 循环里用
full_links.append(full_link)把每个链接加入列表,而非覆盖单个变量 - 增加
if href:判断,过滤掉没有href属性的a标签,避免出现拼接错误 - 用
with open上下文管理器写入文件,遍历列表将每个链接单独写入一行
这样就能得到所有完整链接的列表,保存文件时也会把所有链接都写入进去。
内容的提问来源于stack exchange,提问作者dykuman
相关产品推荐
相关产品推荐

