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. jQuery插件编写步骤详解

    如今做web开发,jquery 几乎是必不可少的,就连vs神器在2010版本开始将Jquery 及ui 内置web项目里了.至于使用jquery好处这里就不再赘述了,用过的都知道.今天我们来讨论下jq ...

  2. Jmeter入门12 __time函数 jmeter获取当前系统时间

    有的接口要传递当前的日期或时间,可以用__time()函数获取当前时间 ${__time()} 当前时间到计算机元年的毫秒数 ${__time(时间格式)}  以预定的格式显示当前时间  请求示例: ...

  3. 【转载】#457 Converting Between enums and their Underlying Type

    When you declare an enum, by default each enumerated value is represented internally with an int. (S ...

  4. Windos下Android(ADT Bundle)配置NDK的两种方法------ADT、Cygwin、NDK配置汇总(转)

    转自:http://blog.csdn.net/yanzi1225627/article/details/16897877 Android开发环境由windows下ADT Bundle搭建,且按前文h ...

  5. (转)python with as的用法

    源地址https://www.cnblogs.com/DswCnblog/p/6126588.html With语句是什么? 有一些任务,可能事先需要设置,事后做清理工作.对于这种场景,Python的 ...

  6. vue.js--基础 事件结合双向数据绑定实现todolist 待办事项 已经完成 和进行中,键盘事件

    <template> <div id="app"> <h1>{{ msg }}</h1> <input type=" ...

  7. 模线性方程&&中国剩余定理及拓展

    一.求解模线性方程 由ax=b(mod n) 可知ax = ny + b 就相当于ax + ny = b 由扩展欧几里得算法可知有解条件为gcd(a, n)整除d 可以直接套用扩展欧几里得算法 最终由 ...

  8. BZOJ4415:[SHOI2013]发牌(线段树)

    Description 假设一开始,荷官拿出了一副新牌,这副牌有N张不同的牌,编号依次为1到N.由于是新牌,所以牌是按照顺序排好的,从牌库顶开始,依次为1, 2,……直到N,N号牌在牌库底.为了发完所 ...

  9. react中虚拟dom的diff算法

    .state 数据 .jsx模板 .生成虚拟dom(虚拟DOM就是一个js对象,用它来描述真实DOM) ['div', {id:'abc'}, ['span', {}, 'hello world']] ...

  10. c#主窗体以及副窗体弹出

    在program.cs中,Form1的位置就是主窗体的位置(主窗体特征:关闭窗体应用程序结束) 弹出副窗口(点击按钮弹出窗口) Close为关闭窗口(关闭对应对象,需要先自己new一个) this.C ...