Python爬虫抓取网页价格成功但无法写入TXT文件问题求助
解决方案
你的写入失败问题和数据类型无关,price.text本身就是合法的字符串类型,核心原因是文件操作逻辑不规范:
- 你打开文件对象后没有执行关闭操作,写入的内容会暂留在内存缓冲区,不会同步写入磁盘
- 未指定文件编码,若爬取内容包含特殊字符可能触发编码错误,中断写入流程
修正后可运行代码
import requests from bs4 import BeautifulSoup as bs url = "https://www.futbin.com/stc/cheapest" # 可选:添加UA请求头避免被网站反爬拦截返回异常内容 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" } r = requests.get(url, headers=headers) soup = bs(r.content, "html.parser") price = soup.find("div", {"class":"d-flex row col-md-9 px-0"}) if price: name = "example" # 使用with上下文管理器处理文件操作,自动关闭文件触发写入 with open(f"{name}.txt", "a", encoding="utf-8") as f: f.write(price.text + "\n") # 追加换行符区分多次写入的内容 else: print("未匹配到对应价格节点,请检查页面结构或CSS选择器")
修改说明
- 文件操作优化:
with语句会在代码块执行完成后自动关闭文件对象,自动将缓冲区的内容写入磁盘,不需要手动调用close()方法 - 编码兼容:指定
encoding="utf-8"参数适配网页的多语言字符,避免编码错误导致写入失败 - 健壮性优化:增加节点非空判断,避免页面结构变动找不到对应元素时抛出属性异常
内容的提问来源于stack exchange,提问作者user17409836
相关产品推荐
相关产品推荐

