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. jdk是什么?jdk1.8安装配置方法

    jdk是什么呢?jdk的是java development kit的缩写,意思是java程序开发的工具包.也可以说jdk是java的sdk. 目前的JDK大致分三个大版本:Java SE:Java P ...

  2. ZT onActivityResult在android中的用法

    onActivityResult在android中的用法 举例说我想要做的一个事情是,在一个主界面(主Activity)上能连接往许多不同子功能模块(子Activity上去),当子模块的事情做完之后就 ...

  3. scrum第四次冲刺

    scrum 第四次冲刺 一.项目目的 为生活在长大的学生提供方快捷的生活服务,通过帖子发现自己志同道合的朋友,记录自己在长大点滴.本项目的意义在于锻炼团队的scrum能力,加强团队合作能力.确定本项目 ...

  4. SpringBoot应用和PostgreSQL数据库部署到Kubernetes上的一个例子

    创建一个名为ads-app-service的服务: 上述Service的yaml文件里每个字段,在Kubernetes的API文档里有详细说明. https://kubernetes.io/docs/ ...

  5. kahadb设计

    Kahadb设计思想   简介 hakadb是activemq的持久化数据库,作为消息队列的存储,每个消息有一个消息ID,提供了对消息的快速的查找,更新,以及消息的事物支持,以及意外磬机之后的恢复.丰 ...

  6. 从并发和索引说说innodb和myisam的区别

    一.引言 这个问题看似是个很俗气的问题,但是在面试中也是个经常被问到的问题.我想很多人都能说出几条,比如事物,外键,等等.但是我想这样想起一点说一句这么回答的话,知识其实都是分散的,这样就显得不是很高 ...

  7. OC 类 的声明

    Student.h // @interface代表声明一个类 // : 代表继承 @interface Student : NSObject { // 成员变量要定义在下面的大括号中{} int ag ...

  8. Android(java)学习笔记30:泛型接口的概述和使用

    1. 泛型接口的概述和使用: package cn.itcast_06; /* * 泛型接口:把泛型定义在接口上 */ public interface Inter<T> { public ...

  9. POJ 3764 The xor-longest Path 【01字典树&&求路径最大异或和&&YY】

    题目传送门:http://poj.org/problem?id=3764 The xor-longest Path Time Limit: 2000MS   Memory Limit: 65536K ...

  10. 使用metasploit自带模块进行端口扫描

    搜索模块: 选择查看: 设置&扫描: