一、文件存储

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. JAVA 字符串编码转换

    /** * 字符串编码转换的实现方法 * @param str 待转换编码的字符串 * @param newCharset 目标编码 * @return * @throws UnsupportedEn ...

  2. nginx反向代理后abp的webapi host如何获取客户端ip?

    dotnet core 跨平台是微软伟大的创举,脱离iis后服务器成本都降低了. 问题 这不,采用abp搞了个小项目,部署到centos后发现审计日志里面的ip信息不对. 解决 这个问题在.net 4 ...

  3. sharepoint 2007 update sharepoint 2013 found old privillege not availabel

    我们下面提及的升级方式是: 2007 > 2010 > 2013 > 2013: classic authentication à claims based authenticati ...

  4. mysql--MySQL数据库的简单认识

    一.MySQL介绍 1.mysql版本 双授权版本:社区版(完全免费,功能也够nb了)和商业版(更好,功能更多更强大一些,但是收费,VIP,有售后服务,也会参考和吸收社区版的一些nb的功能,安全性和稳 ...

  5. POJ的练习题

    http://wenku.baidu.com/link?url=PT1gkBWC3eXuzzs0QqWklC0VNYkf5ynxBFguXPGYR22l1D2tXmQ4VjnsWvbFyvj1fqGi ...

  6. leecode刷题(22)-- 反转数组

    leecode刷题(22)-- 反转数组 反转数组 反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3-> ...

  7. BZOJ3786: 星系探索(伪ETT)

    题面 传送门 题解 坑啊--我好像把\(Splay\)的东西全忘光了-- \(ETT\)(\(Euler\ Tour\ Tree\))是一种可以资瓷比\(LCT\)更多功能的数据结构,然而不管是功能还 ...

  8. IT男装逼利器:如何像黑客一样聊天 Mojo-Webqq

    电影里的黑客们聊天不想我们生活中的一样,用QQ.微信的客户端,都是通过命令行来进行聊天交流的,大概是为了提升逼格吧.(文末有福利~) 本文作者:KevinSVIP 今天发现一个有趣的项目:使用mojo ...

  9. RHEL安装oracle客户端(版本为11.2)

    RHEL安装oracle客户端(版本为 11.2) 1.获取超级管理员 命令:su - 输入root密码 2.安装依赖包: 命令:yum install -y binutils compat-libs ...

  10. php实现图片base64编码解码

    1.图片的base64编码 /*首先要确定图片的类型,需要安装一个php拓展php_fileinfo 如已安装可以在extension_dir目录下找到php_fileinfo.dll(windows ...