Infi-chu:

http://www.cnblogs.com/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)

Python3爬虫(八) 数据存储之TXT、JSON、CSV的更多相关文章

  1. scrapy爬虫事件以及数据保存为txt,json,mysql

    今天要爬取的网页是虎嗅网 我们将完成如下几个步骤: 创建一个新的Scrapy工程 定义你所需要要抽取的Item对象 编写一个spider来爬取某个网站并提取出所有的Item对象 编写一个Item Pi ...

  2. Python常用的数据文件存储的4种格式(txt/json/csv/excel)及操作Excel相关的第三方库(xlrd/xlwt/pandas/openpyxl)(2021最新版)

    序言:保存数据的方式各种各样,最简单的方式是直接保存为文本文件,如TXT.JSON.CSV等,除此之外Excel也是现在比较流行的存储格式,通过这篇文章你也将掌握通过一些第三方库(xlrd/xlwt/ ...

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

    一.文件存储 1. TXT文本存储 例:知乎发现页面,获得数据存成TXT文本 import requests from pyquery import PyQuery as pq url="h ...

  4. 第十节:Web爬虫之数据存储与MySQL8.0数据库安装和数据插入

    用解析器解析出数据之后,接下来就是存储数据了,保存的形式可以多种多样,最简单的形式是直接保存为文本文件,如 TXT.JSON.csv 另外,还可以保存到数据库中,如关系型数据库MySQL ,非关系型数 ...

  5. python3之scrapy数据存储问题(MySQL)

    这次我用的是python3.6,scrapy在python2.7,3.5的使用方法都不同所以要特别注意, 列如 在python3.5的开发环境下scrapy 的主爬虫文件可以使用 from urlli ...

  6. 爬虫实践——数据存储到Excel中

    在进行爬虫实践时,我已经爬取到了我需要的信息,那么最后一个问题就是如何把我所爬到的数据存储到Excel中去,这是我没有学习过的知识. 如何解决这个问题,我选择先百度查找如何解决这个问题. 百度查到的方 ...

  7. Python3编写网络爬虫09-数据存储方式二-JSON文件存储

    2.JSON文件存储 全称为JavaScript Object Notation 通过对象和数组的组合来表示数据,构造简洁且结构化程度非常高.是一种轻量级的数据交换格式 2.1 对象和数组 在Java ...

  8. 主流数据文件类型(.dat/.txt/.json/.csv)导入到python

    手写很累,复制的同学请点赞犒劳下在下哦 ^_^ 一.对于.CSV类型的数据 它们的数据导入都很简单 且看下面一顿操作: 我平时一般是读取整个文件,直接这样就可以了: import pandas as ...

  9. Scrapy爬虫案例 | 数据存储至MySQL

    首先,MySQL创建好数据库和表 然后编写各个模块 item.py import scrapy class JianliItem(scrapy.Item): name = scrapy.Field() ...

随机推荐

  1. 网络防火墙之iptables的前世今生和归宿

    任何事物都有一个从无到有,再归于无的过程.是的,我这里用了一个绝对词:任何. 防火墙 在计算机领域中,防火墙(英文:Firewall)是一项协助确保信息安全的设备,会依照特定的规则,允许或是限制传输的 ...

  2. ubuntu16.4 修改菜单到下方 错误:GLib-GIO-Message: Using the 'memory' GSettings backend. Your settings will not be saved or shared with other applications.

    1.修改命令 #在终端输入 gsettings set com.canonical.Unity.Launcher launcher-position Bottom 2.如果遇错 GLib-GIO-Me ...

  3. JQuery前端技术记录

    [Jquery-leearning notes-2015]by lijun 1   Jquery是javascript实现的库,目标在于改变web应用的高交互性的方式. 其不唐突性:样式(.css). ...

  4. 【[APIO2012]派遣】

    题目 直接线段树合并就好了 之后在线段树上二分贪心选取金额较少的 如果是左偏树的话就开一个大根堆,根和子树顺次合并,合并之后堆内所有元素总和如果大于\(m\)就删除堆顶,由于每个元素只会被删除一次,所 ...

  5. 使用pako.js实现gzip的压缩和解压

    poko.js可至Github下载:https://github.com/nodeca/pako 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ...

  6. C# File流操作

    #region 文件读出 private void button1_Click(object sender, EventArgs e) { OpenFileDialog ofd = new OpenF ...

  7. SpringBoot非官方教程 | 第十七篇:上传文件

    转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springboot/2017/07/11/springboot14-upload/ 本文出自方志朋的博客 这篇文 ...

  8. Struts2 第三讲 -- Struts2的处理流程

    4.Struts2的处理流程 以下是struts-defautl.xml中的拦截器 建议通过这个struts-default的副本查看,更形象 它实现了很多的功能,其中包括国际化,文件上传,类型转换, ...

  9. Object C学习笔记19-枚举(转)

    一. 枚举类型 枚举类型是一个基本类型,不能再分为为任何其他的类型.在一般的编程语言中都有枚举(enum)这种数据结构类型.枚举类型主要用于将一个变量限定在特定的范围内.比如一周有七天,那么一周的值就 ...

  10. App 分辨率相关 - iOS

    针对现有 Apple 设备分辨率小归总,方便日常查看; 顺便推荐一款图片生成工具,个人感觉挺方便好用,放置一张高分辨率大图可自动生成一套配图,软件名称(App Icon Gear). 具体设备分辨率如 ...