数据存储之文件存储
TXT 文件存储
爬取知乎上的热门话题,获取话题的问题、作者、答案,然后保存在TXT文本中
复制import requests from pyquery import PyQuery url = 'https://www.zhihu.com/explore' headers = { 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) ' 'Chrome/58.0.3029.110 Safari/537.36' } html = requests.get(url, headers=headers).text doc = PyQuery(html) # 选择class="explore-tab"的内部class="feed-item"的所有节点,再遍历每一个元素(每个元素就是一个热门话题) items = doc('.explore-tab .feed-item').items() for item in items: # 找到'h2'节点,获取知乎上热门话题的问题 question = item.find('h2').text() # 选择class="author-link-line"的所有节点,获取文本值 author = item.find('.author-link-line').text() # 找到属性值为content的节点,获取其内部文本值,再通过PyQuery()方法初始化获取文本信息 answer = PyQuery(item.find('.content').html()).text() file = open('explore.txt', 'a', encoding='utf-8') file.write('\n'.join([question, author, answer])) file.write('\n' + '=' * 50 + '\n') file.close()
运行结果生成一个TXT文件

JSON 文件存储
读取 JSON
调用JSON库的loads()方法将JSON文本字符串转为JSON对象
复制import json # 注意:JSON数据需要用双引号来包围,不能用单引号。 string = ''' [ { "name": "Lee Hua", "gender": "male", "birthday": "1997-10-25" }, { "name": "Li Hua", "gender": "female", "birthday": "1998-10-25" } ] ''' print(type(string), string, sep='\n') data = json.loads(string) print(type(data), data, sep='\n')
复制# 输出: <class 'str'> [ { "name": "Lee Hua", "gender": "male", "birthday": "1997-10-25" }, { "name": "Li Hua", "gender": "female", "birthday": "1998-10-25" } ] <class 'list'> [{'name': 'Lee Hua', 'gender': 'male', 'birthday': '1997-10-25'}, {'name': 'Li Hua', 'gender': 'female', 'birthday': '1998-10-25'}]
输出 JSON
通过dumps()方法将JSON对象转为文本字符串。
复制import json data = [ { "name": "Lee Hua", "gender": "male", "birthday": "1997-10-25" }, { "name": "李 华", "gender": "男", "birthday": "1998-10-25" } ] with open('data.json', 'w') as file: file.write(json.dumps(data, indent=2)) # 如果不存在data.json文件,运行结果则生成一个名为data.json的文件 # data.json文件内写入的内容: [ { "name": "Lee Hua", "gender": "male", "birthday": "1997-10-25" }, { "name": "\u674e \u534e", "gender": "\u7537", "birthday": "1998-10-25" } ] # file.write(json.dumps(data, indent=2))中, indent参数代表缩进字符个数。 # 如果想要再写入的data.json文件中显示写入的中文,那么file.write(json.dumps(data, indent=2, ensure_ascii=False))即可
CSV 文件存储
csv.writer()和csv.DictWriter()方法
复制import csv with open('data.csv', 'w') as csvfile: writer = csv.writer(csvfile) writer.writerow(['id', 'name', 'age']) writer.writerow(['10001', 'Li Hua', '18']) writer.writerow(['10002', 'Lee Hua', '19']) writer.writerow(['10003', 'liyihua', '20']) # 上面的内容也可以这样写入 # writer = csv.writer(csvfile) # writer.writerow(['id', 'name', 'age']) # writer.writerow( # [ # ['10001', 'Li Hua', '18'], # ['10002', 'Lee Hua', '19'], # ['10003', 'liyihua', '20'] # ] # ) # 上面内容还可以这样写入 # field_names = ['id', 'name', 'age'] # writer = csv.DictWriter(csvfile, fieldnames=field_names) # writer.writerow({'id': '10001', 'name': 'Li Hua', 'age': '18'}) # writer.writerow({'id': '10002', 'name': 'Lee Hua', 'age': '19'}) # writer.writerow({'id': '10003', 'name': 'liyihua', 'age': '20'}) # 运行结果:生成一个data.csv文件,文件内容如下 id,name,age 10001,Li Hua,18 10002,Lee Hua,19 10003,liyihua,20
复制# 想修改行与列之间的分隔符,可以传入参数delimiter参数,writer = csv.writer(csvfile, delimiter='分隔符') # 如果想要追加写入的话,可以修改文件的打开模式,即将open()函数的第二个参数改成a。如:open('file', 'a') # 写入时有时候会遇到编码错误问题,此时只要给open()函数指定编码形式就可以了。如:open('file', 'r', encoding='utf-8')
本文来自博客园,作者:LeeHua,转载请注明原文链接:https://www.cnblogs.com/liyihua/p/11173584.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)