爬虫之数据存储总结(数据库存储待更新)

文件存储到本地

保存格式有:txt csv(表格形式,excel) json(类似字典)等

保存地点:数据库,本地

文件打开方式:

  1. r 读的方式打开文件

  2. rb 二进制的方式读文件 通常打开一些图片音频类的文件用这个

  3. r+ 读写的方式打开文件

  4. rb+ 二进制读写的方式打开文件

  5. w 写的方式打开文件

  6. wb 二进制的形式写入文件 通常将图片或音频 写入文件的时候用

  7. w+ 读写的方式打开文件

  8. wb+ 二进制读写的方式的打开文件

  9. a 追加的方式打开文件 当文件内由内容时,将在其后追加写入

  10. ab 二进制的方式追加

  11. a+ 读写的方式追加

  12. ab+ 二进制读写方式追加

txt:

方便,但不利于检索

  import requests
    from pyquery import PyQuery as pq
    #保存到本地,当前工作目录
    def save(save_path):
         with open(save_path,"a",encoding="utf-8") as f:
                f.write("\n".join([author,question,answer]))
                f.write("\n"+"=="*58+"\n")
                print("保存成功")
    def main():
        url="https://www.zhihu.com/explore"
        save_path="zhihu.txt"
        global question,author,answer
        headers={"User-Agent""":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36"}
        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-line").text()
            answer=pq(item.find(".content").html()).text()
            save(save_path)
                
                
    if __name__=="__main__":
        main()
    

json

何为json?

一种数据格式,类似python中字典格式,结构化程度高,方便我们看。常用于前后端数据的交互。

注意的:

1 json.dumps将Python对象编码成JSON字符串

2 josn.loads 将已经编码的json字符串变为python对象。(网上抓包得到的json数据,需要解码成python对象,再进行后续处理)

将数据保存为json格式,保存到本地

    import json
    #将数据资料保存为json格式  json.dumps
    data=[{"name":"张三",
           "age":"19",
           "height":"188"}]
    #ensure_ascii=False 防止中文乱码
    with open("test_data.json","w")as f:
        f.write(json.dumps(data,indent=2,ensure_ascii=False))

将json格式的字符串转换为python对象,以便处理

实战案例:https://blog.csdn.net/weixin_43919632/article/details/89367624

csv

1.保存文件为csv格式

(1)列表数据写入

 import csv
    header=["name","age","height"]
    #需要写入的列表数据
    text1=["张三","18","188"]
    text2=["李四","18","167"]
    text3=["王五","26","189"]
    #encoding="utf-8"或者'gbk'
    with open("test.csv","w",encoding="gbk",newline='')as f:
        #调用csv的writer方法初始化对象为writer
        writer=csv.writer(f)
        #调用writerow方法 一行行写入  
        writer.writerow(header)
        writer.writerow(text1)
        writer.writerow(text2)				#注意写入的数据要是列表的形式写入
        writer.writerow(text3)
        """
        一次性多行写入
        """
    	#writer.writerows([text1,text2,text3])

效果图:
在这里插入图片描述

(2)字典数据写入

 import csv
    header=["name","age","height"]
    dictext1={"name":"张三",
            'age':'18',
            'height':'188'}
    dictext2={"name":'李四',
    	"age":"14",
        "height":"138"}
    dictext3={"name":"王五",
              "age":"27",
              "height":"210"}
    with open("dictest.csv","w",newline='',encoding="gbk")as f:
        #调用csv的DictWriter()方法初始化对象writer
        writer=csv.DictWriter(f,fieldnames=header)
        #写入header
        writer.writeheader()					
        writer.writerows([dictext1,dictext2,dictext3])	#这里字典数据,要用列表括起来传进去
    

效果图:
在这里插入图片描述

csv存储实战:https://blog.csdn.net/weixin_43919632/article/details/88089699

csv文件的读取:

(1)采用csv的reader方法读取文件,初始化reader,返回一个迭代器,遍历打印出来。

import csv
with open("text.csv",'r',encoding="utf-8") as f:
	reader=csv.reader(f)
for row in reader:
	print(row)
	

(2)pandas库读取csv文件
采用read_csv方法

import pandas as pd
text=pd.read_csv("text.csv")
print(text)

数据存储到关系型数据库:

关系模型是通过二维表来存储的,每一列代表一个字段,(如上方的csv存储中,name,age,height分别是一个字段),每一行代表一条记录(dictext1,dictext2,dictext3分别是一条记录)。

关系型数据库有:MySQL,Oracle,SQLite,SQL Server 等等

MySOL的存储:

待更新。。。。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值