一、文件存储

1. TXT文本存储
代码有不明白的 欢迎来微信公众号“他她自由行”找我,回复任何话都可以 我都会回你哒~

例:知乎发现页面,获得数据存成TXT文本

import requests
from pyquery import PyQuery as pq
url="https://www.zhihu.com/explore" headers={'User-Agent':'ozilla/5.0 (iPhone; CPU iPhone OS 11_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E5216a QQ/7.5.5.426 V1_IPH_SQ_7.5.5_1_APP_A Pixel/1080 Core/UIWebView Device/Apple(iPhone 8Plus) NetType/WIFI QBWebViewType/1'
}
html=requests.get(url,headers=headers).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').text()
answer=pq(item.find('.content').html()).text()
with open('zhihu_explore.text','a',encoding='utf-8') as file:
file.write('\n'.join([question,author,answer]))
file.write('\n'+'='*50+'\n')

注意:

  1. 在用pyquery解析时,一定要找准属性进行匹配;
  2. 打开文件open()函数第二个参数设置为a,其他值:
   r:以只读方式打开文件
w:以写入方式打开文件(覆盖之前文件)
a:以追加方式打开文件(不覆盖之前文件,追加上)
特:后面跟 + :代表以读写方式打开文件
后面跟 b :代表以二进制方式打开文件

3.每次open()打开文件后都要用close()关闭,直接用 with as 语句,会自动关闭文件。

2.JSON文件存储

JSON,是JavaScript对象标记,通过对象和数组的组合来表示数据

对象:数据结构为{key1:value1,key2:value2,...}的键值对结构

数组:数据结构为['Java','javascript','vb',...]的索引结构

(1)读取JSON文件

loads():把数据从JSON文本字符串转为JSON对象
dumps():把数据从JSON对象转为文本字符串
data=json.loads(str) //type(data)是list对象
str=json.dumps(data) //type(str)是字符串 获取属性值:
data[0]['name'] 或
data[0].get('name') //两种方式获取第一个元素的name属性的值;
.get('name',tom) //.get()方式更好:当没有name值时,会报None且可以用用第二个参数设定默认值
读取:
import json
with open('data.json','r') as file:
str=file.read()
data=json.loads(str)

注意:

  1. JSON的数据需要双引号来包围。
  2. 在data.json文件中是以字符串存在,读取时要用loads()转成JSON对象来应用,存储时用dumps()把JSON对象存成字符串。

(2)输出JSON,写入文件

with open('data.json','w') as file:
file.write(json.dumps(data,indent=2,ensure_ascii=False)) //indent是缩进个数,ensure_ascii是防止中文被编译成ascii码
3.csv文件存储

csv,叫作逗号分隔值或字符分隔值,以纯文本形式存储表格数据。

(1) 写入

import csv
with open('data.csv','w') as csvfile:
writer=csv.writer(csvfile) //初始化写入对象
writer.writerow(['id','name','age'])
writer.writerow(['10001','Mike','20'])
writer.writerow(['10002','Bob','23'])
writer.writerow(['10003','Jordan','21']) 这样就会生成一个data.csv文件

特:

  1. writer=csv.writer(csvfile,delimiter=' ') 意味着将列与列间的分隔符,变成空格分隔符
  2. writer.writerow([['10001','Mike','20'],['10002','BOb','23'],['10003','Jordan','21']])

    以二维列表的形式写入
  3. 字典形式写入:
    import csv
with open('data.csv','w') as csvfile:
filename=['id','name','age'] //定义写入名称
writer=csv.DictWriter(csvfile,filename=filename) //初始化一个字典写入对象
writer.writeheader() //写入头信息
writer.writerow({'id':'10001','name':'Mike','age':20})
writer.writerow({'id':'10002','name':'Bob','age':23})

注意:如果name='李明',则要改变编码方式open('data.csv','w',encoding='utf-8') 变成中文编码

(2)读取

(1 利用csv库读取:

import csv
with open('data.csv','r','utf-8') as csvfile:
reader=csv.reader(csvfile)
for row in reader:
print(row)
//按行输出数据

(2 利用pandas读取:

(pandas是数据分析当中非常重要的一个库,在我的数据分析博客中会提及很多次)

import pandas as pd
df=pd.read_csv('data.csv')
print(df)
代码有不明白的 欢迎来微信公众号“他她自由行”找我,回复任何话都可以 我都会回你哒~

(完整)爬取数据存储之TXT、JSON、CSV存储的更多相关文章

  1. Scrapy持久化存储-爬取数据转义

    Scrapy持久化存储 爬虫爬取数据转义问题 使用这种格式,会自动帮我们转义 'insert into wen values(%s,%s)',(item['title'],item['content' ...

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

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

  3. scrapy爬取数据的基本流程及url地址拼接

    说明:初学者,整理后方便能及时完善,冗余之处请多提建议,感谢!   了解内容: Scrapy :抓取数据的爬虫框架     异步与非阻塞的区别   异步:指的是整个过程,中间如果是非阻塞的,那就是异步 ...

  4. Java分布式爬虫Nutch教程——导入Nutch工程,执行完整爬取

    Java分布式爬虫Nutch教程--导入Nutch工程,执行完整爬取 by briefcopy · Published 2016年4月25日 · Updated 2016年12月11日 在使用本教程之 ...

  5. Python使用Scrapy框架爬取数据存入CSV文件(Python爬虫实战4)

    1. Scrapy框架 Scrapy是python下实现爬虫功能的框架,能够将数据解析.数据处理.数据存储合为一体功能的爬虫框架. 2. Scrapy安装 1. 安装依赖包 yum install g ...

  6. 关于js渲染网页时爬取数据的思路和全过程(附源码)

    于js渲染网页时爬取数据的思路 首先可以先去用requests库访问url来测试一下能不能拿到数据,如果能拿到那么就是一个普通的网页,如果出现403类的错误代码可以在requests.get()方法里 ...

  7. 爬取豆瓣电影TOP 250的电影存储到mongodb中

    爬取豆瓣电影TOP 250的电影存储到mongodb中 1.创建项目sp1 PS D:\scrapy> scrapy.exe startproject douban 2.创建一个爬虫 PS D: ...

  8. 【Spider】使用CrawlSpider进行爬虫时,无法爬取数据,运行后很快结束,但没有报错

    在学习<python爬虫开发与项目实践>的时候有一个关于CrawlSpider的例子,当我在运行时发现,没有爬取到任何数据,以下是我敲的源代码:import scrapyfrom UseS ...

  9. python爬取豌豆荚中的详细信息并存储到SQL Server中

    买了本书<精通Python网络爬虫>,看完了第6章,我感觉我好像可以干点什么:学的不多,其中的笔记我放到了GitHub上:https://github.com/NSGUF/PythonLe ...

  10. 如何提升scrapy爬取数据的效率

    在配置文件中修改相关参数: 增加并发 默认的scrapy开启的并发线程为32个,可以适当的进行增加,再配置文件中修改CONCURRENT_REQUESTS = 100值为100,并发设置成了为100. ...

随机推荐

  1. Android性能测试-内存

    前言: 近阶段都在探索android性能测试方面的东西,其中一个很重要的指标就是内存.对于内存,主要是一些gc是不是及时,或者说一些引用有没有及时释放,有没有导致oom或者内存持续增加导致卡顿,有没有 ...

  2. redis5.0.4-cluster集群搭建及jedis客户端操作

    一.去官网下载redis5.0 https://redis.io/download 然后解压安装 $ .tar.gz $ cd redis- $ make 二.准备配置文件 打开redis-5.0.4 ...

  3. Performs the analysis process on a text and return the tokens breakdown of the text

    Analyzeedit Performs the analysis process on a text and return the tokens breakdown of the text. Can ...

  4. PHP消息队列实现

    一个经典的消息队列就是这样的,主要是入队出队操作. shell脚本日志输出 学习地址:http://www.imooc.com/article/19111

  5. centos和ubuntu配置路由的三种方式

    本篇总结三种修改路由的方式:route, ip route, 以及通过修改文件来配置路由,前2种命令行形式适用于ubuntu和centos,重启失效,最后一种永久有效.     一. route命令 ...

  6. notepad++常用操作梳理

    在  设置---管理快捷键   可以查询/重置快捷键.如下: 工作or学习中最长用到的操作: Ctrl+ALT-C:列编辑Ctrl+U:转换为小写Ctrl+Shift+U:转换为大写Ctrl+B:跳转 ...

  7. Kotlin Eclipse 环境搭建

    Kotlin是JetBrains开发的基于JVM的语言.JetBrains是一家捷克的软件开发公司,该公司位于捷克的布拉格,研发了IntelliJ IDEA这款相对于Eclipse有较大改善的大名鼎鼎 ...

  8. linux下启动tomcat服务的命令是什么

    Linux下tomcat服务的启动.关闭与错误跟踪,使用PuTTy远程连接到服务器以后,通常通过以下几种方式启动关闭tomcat服务:切换到tomcat主目录下的bin目录(cd usr/local/ ...

  9. php 下载文件/直接下载数据内容

    思路步骤 * 定义参数 * 魔术方法 * 执行下载 * 获取设置属性函数 * 获取设置文件mime 类型 * 获取设置下载文件名 * 设置header * 下载函数 实现代码 class DownFi ...

  10. GoLand 调试 Go

    Goland 调试 Go 从百度得知 VS Code 不能很好的支持 Go 的调试真让人肝儿疼 -- 引言 准备 Win 10 Pro Go(Version 1.10) GoLand(2018.3) ...