分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 软件开发

(完整)爬取数据存储之TXT、JSON、CSV存储

发布时间:2023-09-06 02:32责任编辑:胡小海关键词:暂无标签

一、文件存储

1. TXT文本存储

例:知乎发现页面,获得数据存成TXT文本

import requestsfrom pyquery import PyQuery as pqurl="https://www.zhihu.com/explore"headers={‘User-Agent‘:‘ozilla/5.0 (iPhone; CPU iPhone OS 11_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E5216a QQ/7.5.5.426 V1_IPH_SQ_7.5.5_1_APP_A Pixel/1080 Core/UIWebView Device/Apple(iPhone 8Plus) NetType/WIFI QBWebViewType/1‘ ???????}html=requests.get(url,headers=headers).textdoc=pq(html)#问题列表items=doc(‘.explore-tab .feed-item‘).items()for item in items: ???question=item.find(‘h2‘).text() ???author=item.find(‘.author-link‘).text() ???answer=pq(item.find(‘.content‘).html()).text() ???with open(‘zhihu_explore.text‘,‘a‘,encoding=‘utf-8‘) as file: ???????file.write(‘\n‘.join([question,author,answer])) ???????file.write(‘\n‘+‘=‘*50+‘\n‘)

注意:

  1. 在用pyquery解析时,一定要找准属性进行匹配;
  2. 打开文件open()函数第二个参数设置为a,其他值:
 ??r:以只读方式打开文件 ??w:以写入方式打开文件(覆盖之前文件) ??a:以追加方式打开文件(不覆盖之前文件,追加上) ??特:后面跟 + :代表以读写方式打开文件 ??????后面跟 b :代表以二进制方式打开文件

3.每次open()打开文件后都要用close()关闭,直接用 with as 语句,会自动关闭文件。

2.JSON文件存储

JSON,是JavaScript对象标记,通过对象和数组的组合来表示数据

对象:数据结构为{key1:value1,key2:value2,...}的键值对结构
数组:数据结构为[‘Java‘,‘javascript‘,‘vb‘,...]的索引结构
(1)读取JSON文件

loads():把数据从JSON文本字符串转为JSON对象dumps():把数据从JSON对象转为文本字符串data=json.loads(str) ?//type(data)是list对象str=json.dumps(data) //type(str)是字符串获取属性值:data[0][‘name‘] 或data[0].get(‘name‘) ????//两种方式获取第一个元素的name属性的值; ??????.get(‘name‘,tom) //.get()方式更好:当没有name值时,会报None且可以用用第二个参数设定默认值读取:import json with open(‘data.json‘,‘r‘) as file: ???str=file.read() ???data=json.loads(str)

注意:

  1. JSON的数据需要双引号来包围。
  2. 在data.json文件中是以字符串存在,读取时要用loads()转成JSON对象来应用,存储时用dumps()把JSON对象存成字符串。

(2)输出JSON,写入文件

with open(‘data.json‘,‘w‘) as file: ???file.write(json.dumps(data,indent=2,ensure_ascii=False)) //indent是缩进个数,ensure_ascii是防止中文被编译成ascii码
3.csv文件存储

csv,叫作逗号分隔值或字符分隔值,以纯文本形式存储表格数据。

(1) 写入

import csvwith open(‘data.csv‘,‘w‘) as csvfile: ???writer=csv.writer(csvfile) ?//初始化写入对象 ???writer.writerow([‘id‘,‘name‘,‘age‘]) ???writer.writerow([‘10001‘,‘Mike‘,‘20‘]) ???writer.writerow([‘10002‘,‘Bob‘,‘23‘]) ???writer.writerow([‘10003‘,‘Jordan‘,‘21‘]) ???这样就会生成一个data.csv文件

特:

  1. writer=csv.writer(csvfile,delimiter=‘ ‘) 意味着将列与列间的分隔符,变成空格分隔符
  2. writer.writerow([[‘10001‘,‘Mike‘,‘20‘],[‘10002‘,‘BOb‘,‘23‘],[‘10003‘,‘Jordan‘,‘21‘]])
    以二维列表的形式写入
  3. 字典形式写入:
 ???import csv ????with open(‘data.csv‘,‘w‘) as csvfile: ???????filename=[‘id‘,‘name‘,‘age‘] ?//定义写入名称 ???????writer=csv.DictWriter(csvfile,filename=filename) //初始化一个字典写入对象 ???????writer.writeheader() ?????????//写入头信息 ???????writer.writerow({‘id‘:‘10001‘,‘name‘:‘Mike‘,‘age‘:20}) ???????writer.writerow({‘id‘:‘10002‘,‘name‘:‘Bob‘,‘age‘:23}) ???????

注意:如果name=‘李明‘,则要改变编码方式open(‘data.csv‘,‘w‘,encoding=‘utf-8‘) 变成中文编码

(2)读取

(1 利用csv库读取:

import csvwith open(‘data.csv‘,‘r‘,‘utf-8‘) as csvfile: ???reader=csv.reader(csvfile) ???for row ?in reader: ???????print(row)//按行输出数据

(2 利用pandas读取:
(pandas是数据分析当中非常重要的一个库,在我的数据分析博客中会提及很多次)

import pandas as pddf=pd.read_csv(‘data.csv‘)print(df)

(完整)爬取数据存储之TXT、JSON、CSV存储

原文地址:https://www.cnblogs.com/xubin97/p/10354508.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved