博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python3爬虫(八) 数据存储之TXT、JSON、CSV
阅读量:4342 次
发布时间:2019-06-07

本文共 2460 字,大约阅读时间需要 8 分钟。

 Infi-chu:

TXT文本存储

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

1.举例:

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

import requestsfrom pyquery import PyQuery as pqurl = '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).textdoc = 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 jsondata = [{'name':'Infi-chu','sex':'male','birthday':'2000.01.01'}]with open('data.json','w+') as f:    f.wirte(json.dumps(data))'''想要保存json的格式,可以加一个参数,indentwith open('data.json','w') as f:    f.write(json.dumps(data,indent=2))'''

 

CSV文件存储

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

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

1.举例

import csvwith 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 csvwith 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 csvwith open('data.csv','r',encoding='utf-8') as f:    reader = csv.reader(f)    # reader()方法便利出每行的内容    for i in render:        print(row)# 通过pandas 读取import pandas as pddf = pd.read_csv('data.csv')print(df)

转载于:https://www.cnblogs.com/Infi-chu/p/8979219.html

你可能感兴趣的文章
Hibernate视频学习笔记(8)Lazy策略
查看>>
CSS3 结构性伪类选择器(1)
查看>>
IOS 杂笔-14(被人遗忘的owner)
查看>>
自动测试用工具
查看>>
前端基础之BOM和DOM
查看>>
[T-ARA/筷子兄弟][Little Apple]
查看>>
编译Libgdiplus遇到的问题
查看>>
【NOIP 模拟赛】Evensgn 剪树枝 树形dp
查看>>
java学习笔记④MySql数据库--01/02 database table 数据的增删改
查看>>
两台电脑如何实现共享文件
查看>>
组合模式Composite
查看>>
程序员最想得到的十大证件,你最想得到哪个?
查看>>
我的第一篇CBBLOGS博客
查看>>
【MyBean调试笔记】接口的使用和清理
查看>>
07 js自定义函数
查看>>
jQueru中数据交换格式XML和JSON对比
查看>>
form表单序列化后的数据转json对象
查看>>
[PYTHON]一个简单的单元測试框架
查看>>
[BZOJ4303]数列
查看>>
一般处理程序在VS2012中打开问题
查看>>