python爬数据保存json_Python3爬虫(八) 数据存储之TXT、JSON、CSV

Infi-chu:

TXT文本存储

TXT文本存储,方便,简单,几乎适用于任何平台。但是不利于检索。

1.举例:

使用requests获得网页源代码,然后使用pyquery解析库解析

import requests

from pyquery import PyQuery as pq

url = 'https://www.zhihu.com/explore'

header = {

'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)'

}

html = requests.get(url,headers=header).text

doc = pq(html)

items = doc('.explore-tab .feed-item').items()

for item in items:

question = item.find('h2').text()

author = item.find('.author-link-line').text()

answer = pq(item.find('.content').html()).text()

with open('test.txt','a',encoding='uft-8') as f:

f.write('\n'.join([author,question,answer]))

f.write('\n'.join('\n'+'='*50+'\n'))

2.打开方式:

r

rb

r+

rb+

w

wb

w+

wb+

a

ab

a+

ab+

【注】

w和a的区别相当于Linux中>和>> 的区别

JSON文件存储

JSON全称为(JavaScript Object Notation),JavaScript对象标记,通过对象和数组的组合来表示数据,构造简洁,结构化程度非常高,类似于Python当中的字典

1.对象&数组:

在JavaScript中,一切皆对象。

对象:

在JavaScript中使用{}来表示,可以理解为Python当中的字典,有键有值。

数组:

在JavaScript中使用[]来表示,可以理解为Python当中的列表。

2.读取JSON

我们可以调用Python的json库的loads()方法将JSON文本转化为JSON对象,使用dumps()方法将JSON对象转化为文本字符串。

使用get()方法得到键的名字后的值,如果没有值,则返回None,一般会自定义一个默认值,以防返回None

在JSON字符串中,要使用双引号,否则会抛出异常。

3.输出JSON

调用dumps()方法将JSON对象转化为文本字符串。

import json

data = [

{

'name':'Infi-chu',

'sex':'male',

'birthday':'2000.01.01'

}

]

with open('data.json','w+') as f:

f.wirte(json.dumps(data))

'''

想要保存json的格式,可以加一个参数,indent

with open('data.json','w') as f:

f.write(json.dumps(data,indent=2))

'''

CSV文件存储

CSV全称是(Comma-Separated Values),逗号分隔值或字符分隔值,它是以纯文本形式存储表格数据,相当于结构化的纯文本。

它比Excel更简洁,XLS文本是电子表格,它包含了文本、数值、公式和格式等内容,而CSV中不包含这些内容。

1.举例

import csv

with open('data.csv','w+') as cf:

wirter = csv.writer(cf)

'''

wirter = csv.writer(cf,delimiter=' ') # 此参数是增加分隔符

'''

wirter.wirterow(['id','name','age']) # writerows是同时写入多行,writerow是单行写入

wirter.wirterow(['1','Infi',23])

wirter.wirterow(['2','chu',23])

# 字典方式的写入发

import csv

with open('data.csv','w')as f:

fieldname = ['id','name','age']

wirter = csv.DictWriter(f,filednames=filename) # DictWriter()方法初始化一个字典写入对象

wirter.writheader() # writheader()方法写入头信息

wirter.wirterows({'id':'1','name':'n1','age':1},{'id':'2','name':'n2','age':2},{'id':'3','name':'n3','age':3})

2.读取

# 通过csv库来读取CSV文件

import csv

with open('data.csv','r',encoding='utf-8') as f:

reader = csv.reader(f) # reader()方法便利出每行的内容

for i in render:

print(row)

# 通过pandas 读取

import pandas as pd

df = pd.read_csv('data.csv')

print(df)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值