数据存储,在爬虫中也是十分的重要,因为我们要把我们想要的数据保存到本地,其中最简单直接的就是保存为文件文本,比如:TXT、JSON、CSV等等,除此之外,我们还可以将其保存到数据库中,常见的数据库类型有关系型数据库(MySQL)和非关系型数据库(MongoDB、Redis)。今天主要是看着书学习了一下TXT文本存储。

TXT文本存储的操作比较简单,同样也有一个就是不利于检索,上代码(爬取知乎“发现”页面的热门话题):

import requests
from pyquery import PyQuery as pq
url = 'http://www.zhihu.com/explore'
headers = {
'Accept': 'image/webp,image/*,*/*;q=0.8',
'Accept-Language':'zh-CN,zh;q=0.8',
'Referer':'https://www.zhihu.com/explore',
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0'
}
html = requests.get(url,headers = headers).text
# print(html)
doc = pq(html)
# print(doc)
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('zhuhu.txt', 'a',encoding='utf-8') as file:
file.write('\n'.join([question,author,answer]))
file.write('\n' + '=' *50 + '\n')
print("ok")
其中,我们主要用到了pyquery解析。还有一个需要解释的就是
with open('zhihu.txt', 'a',encoding='utf-8') as file:
中的zhihu.txt就是我们要保存的文件名称和类型,encoding='utf-8就是解码操作,如果不解码,返回的是二进制字符串,是无法正常阅读的,所以我们需要对其进行解码。
a代表的是以追加方式打开一个文件,如果该文件已经存在,文件指针就会自动放到文件结尾,如果文件不存在,就会创建新的文件来写入。除了a之外,还有几个,下边一一介绍:
r:以只读方式打开一个文件,文件的指针自动放到文件的开头。
rb:以二进制只读方式打开一个文件,文件的指针自动放到文件的开头。
r+:以读写方式打开一个文件,文件的指针自动放到文件的开头。
rb+:以二进制读写方式打开一个文件,文件的指针自动放到文件的开头。
w:以写入方式打开一个文件,如果文件已经存在,则将其覆盖,如果文件不存在,则创建新的文件。
wb:以二进制写入方式打开一个文件,如果文件已经存在,则将其覆盖,如果文件不存在,则创建新的文件。
w+:以读写方式打开一个文件,如果文件已经存在,则将其覆盖,如果文件不存在,则创建新的文件。
ab:以二进制追加方式打开一个文件,如果文件已经存在,则文件指针会放在文件结尾,如果有新的内容,会写入到已有内容的后边;如果文件不存在,则创建新的文件。
a+:以读写方式打开一个文件,如果文件已经存在,则文件指针会放在文件结尾,文件打开时会是追加模式,如果文件不存在,则创建新的文件。
ab+:以二进制追加方式打开一个文件。如果文件已经存在,则文件指针将会放在文件结尾,如果文件不存在,则创建新文件用于读写。

python-day8爬虫基础之数据存储的更多相关文章

  1. Python多线程爬虫与多种数据存储方式实现(Python爬虫实战2)

    1. 多进程爬虫 对于数据量较大的爬虫,对数据的处理要求较高时,可以采用python多进程或多线程的机制完成,多进程是指分配多个CPU处理程序,同一时刻只有一个CPU在工作,多线程是指进程内部有多个类 ...

  2. 05.Python网络爬虫之三种数据解析方式

    引入 回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需要进行指 ...

  3. 05,Python网络爬虫之三种数据解析方式

    回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需要进行指定数据 ...

  4. 《Python网络爬虫之三种数据解析方式》

    引入 回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需要进行指 ...

  5. Python扫描器-爬虫基础

    0x1.基础框架原理 1.1.爬虫基础 爬虫程序主要原理就是模拟浏览器发送请求->下载网页代码->只提取有用的数据->存放于数据库或文件中 1.1.基础原理 1.发起HTTP请求 2 ...

  6. Python网络爬虫之三种数据解析方式 (xpath, 正则, bs4)

    引入 回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需要进行指 ...

  7. python从爬虫基础到爬取网络小说实例

    一.爬虫基础 1.1 requests类 1.1.1 request的7个方法 requests.request() 实例化一个对象,拥有以下方法 requests.get(url, *args) r ...

  8. Python归纳 | 爬虫基础知识

    1. urllib模块库 Urllib是python内置的HTTP请求库,urllib标准库一共包含以下子包: urllib.error 由urllib.request引发的异常类 urllib.pa ...

  9. <Android基础> (六) 数据存储 Part 1 文件存储方式

    第六章 数据存储 6.1 持久化技术 持久化技术指将内存中的瞬时数据保存到存储设备中,保证即使在手机或电脑关机的情况下,这些数据仍然不会丢失. 主要有三种方式用于简单地实现数据持久化功能:文件存储.S ...

随机推荐

  1. (四)requests模块的cookies和代理操作

    基于requests模块的cookie操作 引言:有些时候,我们在使用爬虫程序去爬取一些用户相关信息的数据(爬取某个人“人人网”个人主页数据)时,如果使用之前requests模块常规操作时,往往达不到 ...

  2. MFC中隐藏和显示光标的切换

    函数原型:int ShowCursor(BOOL bShow): 参数: bShow:确定内部的显示计数器是增加还是减少,如果bShow为TRUE,则显示计数器增加1,如果bShow为FALSE,则计 ...

  3. 大数据高可用集群环境安装与配置(07)——安装HBase高可用集群

    1. 下载安装包 登录官网获取HBase安装包下载地址 https://hbase.apache.org/downloads.html 2. 执行命令下载并安装 cd /usr/local/src/ ...

  4. 删除所有的docker容器和镜像(转载)

    列出所有的容器 ID docker ps -aq 停止所有的容器 docker stop $(docker ps -aq) 删除所有的容器 docker rm $(docker ps -aq) 删除所 ...

  5. vue中的axios请求

    1.get请求 // get this.$axios.get('请求路径') .then(function (response) { console.log(response); // 成功 }) . ...

  6. 「黑科技」智能消毒防疫机器人 技术方案介绍-disinfection robot

    消毒机器人 小新防疫消杀机器人 - 自主导航全方位360°臭氧杀菌消毒机器人,采用臭氧无阻碍.无死角.遍布整个空间除菌:强力涡轮风机,30㎡室内空气循环6次/h,10分钟速效杀菌.除异味.自动转化为氧 ...

  7. pycharm和python安装

    1.pycharm安装:https://www.cnblogs.com/dcpeng/p/9031405.html 2,python安装:https://www.liaoxuefeng.com/wik ...

  8. POJ 1013:Counterfeit Dollar

    Counterfeit Dollar Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 42028   Accepted: 13 ...

  9. HTML5新标签使用及CSS选择器(伪类)

    这些标签能够让搜索引擎更直接的解析页面内容. <header></header>语义:文档或者页面的头部 <nav></nav>语义:导航这两者不是组合 ...

  10. UVM实战[二]

    本期将讲解UVM环境构成和启动方式.主要参考资料为 http://bbs.eetop.cn/thread-320165-1-1.html http://rockeric.com/ 环境构成 进行仿真验 ...