爬虫之数据存储(json,csv,mysql)等

2023-05-16

JSON支持数据格式:

  1. 对象(字典)。使用花括号。
  2. 数组(列表)。使用方括号。
  3. 整形、浮点型、布尔类型还有null类型。
  4. 字符串类型(字符串必须要用双引号,不能用单引号)。

    Python 编码为 JSON 类型转换对应表:

    PythonJSON
    dictobject
    list, tuplearray
    strstring
    int, float, int- & float-derived Enumsnumber
    Truetrue
    Falsefalse
    Nonenull

多个数据之间使用逗号分开。
注意:json本质上就是一个字符串。

Python3 中可以使用 json 模块来对 JSON 数据进行编解码,它包含了两个函数:

  • json.dumps(): 对数据进行编码。
  • json.loads(): 对数据进行解码。

字典和列表转JSON:

import json

books = [
    {
        'title': '钢铁是怎样练成的',
        'price': 9.8
    },
    {
        'title': '红楼梦',
        'price': 9.9
    }
]

json_str = json.dumps(books,ensure_ascii=False)
print(json_str)

因为jsondump的时候,只能存放ascii的字符,因此会将中文进行转义,这时候我们可以使用ensure_ascii=False关闭这个特性。
Python中。只有基本数据类型才能转换成JSON格式的字符串。也即:intfloatstrlistdicttuple

将json数据直接dump到文件中:

json模块中除了dumps函数,还有一个dump函数,这个函数可以传入一个文件指针,直接将字符串dump到文件中。示例代码如下:

books = [
    {
        'title': '钢铁是怎样练成的',
        'price': 9.8
    },
    {
        'title': '红楼梦',
        'price': 9.9
    }
]
with open('a.json','w') as fp:
    json.dump(books,fp)

将一个json字符串load成Python对象:

json_str = '[{"title": "钢铁是怎样练成的", "price": 9.8}, {"title": "红楼梦", "price": 9.9}]'
books = json.loads(json_str,encoding='utf-8')
print(type(books))
print(books)

直接从文件中读取json:

import json
with open('a.json','r',encoding='utf-8') as fp:
    json_str = json.load(fp)
    print(json_str)

csv文件处理

读取csv文件:

import csv

with open('stock.csv','r') as fp:
    reader = csv.reader(fp)
    titles = next(reader)
    for x in reader:
        print(x)

这样操作,以后获取数据的时候,就要通过下表来获取数据。如果想要在获取数据的时候通过标题来获取。那么可以使用DictReader。示例代码如下:

import csv

with open('stock.csv','r') as fp:
    reader = csv.DictReader(fp)
    for x in reader:
        print(x['turnoverVol'])

写入数据到csv文件:

写入数据到csv文件,需要创建一个writer对象,主要用到两个方法。一个是writerow,这个是写入一行。一个是writerows,这个是写入多行。示例代码如下:

import csv

headers = ['name','age','classroom']
values = [
    ('zhiliao',18,'111'),
    ('wena',20,'222'),
    ('bbc',21,'111')
]
with open('test.csv','w',newline='') as fp:
    writer = csv.writer(fp)
    writer.writerow(headers)
    writer.writerows(values)

也可以使用字典的方式把数据写入进去。这时候就需要使用DictWriter了。示例代码如下:

import csv

headers = ['name','age','classroom']
values = [
    {"name":'wenn',"age":20,"classroom":'222'},
    {"name":'abc',"age":30,"classroom":'333'}
]
with open('test.csv','w',newline='') as fp:
    writer = csv.DictWriter(fp,headers)
    writer = csv.writeheader()
    writer.writerow({'name':'zhiliao',"age":18,"classroom":'111'})
    writer.writerows(values)

 

MySQL数据库操作

安装mysql:

  1. 在官网:https://dev.mysql.com/downloads/windows/installer/5.7.html
  2. 如果提示没有.NET Framework框架。那么就在提示框中找到下载链接,下载一个就可以了。
  3. 如果提示没有Microsoft Virtual C++ x64(x86),那么百度或者谷歌这个软件安装即可。
  4. 如果没有找到。那么私聊我。

navicat:

navicat是一个操作mysql数据库非常方便的软件。使用他操作数据库,就跟使用excel操作数据是一样的。

安装驱动程序:

Python要想操作MySQL。必须要有一个中间件,或者叫做驱动程序。驱动程序有很多。比如有mysqldbmysqlclientpymysql等。在这里,我们选择用pymysql。安装方式也是非常简单,通过命令pip install pymysql即可安装。

数据库连接:

数据库连接之前。首先先确认以下工作完成,这里我们以一个pymysql_test数据库.以下将介绍连接mysql的示例代码:

    import pymysql

    db = pymysql.connect(
        host="127.0.0.1",
        user='root',
        password='root',
        database='student',
        port=3306
    )
    cursor = db.cursor()
    cursor.execute("select 1")
    data = cursor.fetchone()
    print(data)
    db.close()

插入数据:

import pymysql

db = pymysql.connect(
    host="127.0.0.1",
    user='root',
    password='root',
    database='student',
    port=3306
)
cursor = db.cursor()
sql = """
insert into student(
    stuno,stuname,stusex
  ) 
  values(18,'abc','女');
"""

cursor.execute(sql)
db.commit()
db.close()

如果在数据还不能保证的情况下,可以使用以下方式来插入数据:

sql = """
insert into student(
    stuno,stuname,stusex
  ) 
  values(%s,%s,%s);
"""

cursor.execute(sql,(20,'spider','男'))

查找数据:

使用pymysql查询数据。可以使用fetch*方法。

  1. fetchone():这个方法每次之获取一条数据。
  2. fetchall():这个方法接收全部的返回结果。
  3. fetchmany(size):可以获取指定条数的数据。
    示例代码如下:
import pymysql

db = pymysql.connect(
    host="127.0.0.1",
    user='root',
    password='root',
    database='student',
    port=3306
)
cursor = db.cursor()

sql = """
select * from student
"""

cursor.execute(sql)
while True:
    result = cursor.fetchone()
    if not result:
        break
    print(result)
db.close()

或者是直接使用fetchall,一次性可以把所有满足条件的数据都取出来:

cursor = db.cursor()

sql = """
select * from user
"""

cursor.execute(sql)
results = cursor.fetchall()
for result in results:
    print(result)
db.close()

或者是使用fetchmany,指定获取多少条数据:

cursor = db.cursor()

sql = """
select * from user
"""

cursor.execute(sql)
results = cursor.fetchmany(1)
for result in results:
    print(result)
db.close()

删除数据:

sql = """
delete from student where stuno=99
"""

cursor.execute(sql)
db.commit()
db.close()

更新数据:

sql = """
update student set stuname='花花' where stuno=18
"""

cursor.execute(sql)
db.commit()
db.close()

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

爬虫之数据存储(json,csv,mysql)等 的相关文章

  •     2016 年 高等工程数学 期末试题

    2016 年 高等工程数学 期末试题
  • 数据降维之因子分析

    之前学习的时候大略看了一下 xff0c 不记得什么 xff0c 重新学习学习 因子分析 factor analysis 是主成分分析的推广和发展 xff0c 与主成分分析 一样 xff0c 它也是一种 降维 的统计分析方法 是一种用来分析隐
  • nvcc fatal : No input files specified; use option --help for more information

    记录一下出现的不可思议的bug nvcc fatal No input files specified use option help for more information 首先看看是否是大小写问题 是不是神bug
  • window10+ NVIDIA GeForce RTX 3090安装pytorch

    显卡版本是 NVIDIA GeForce RTX 3090 安装NVIDIA cudn 11 1 cudnn是8 0 4 30版本 安装显卡见https blog csdn net china xin1 article details 10
  • 图神经网络

    参考资料 斯坦福CS224W课程 xff1a http cs224w stanford edu https snap stanford github io cs224w notes https www bilibili com video
  • 如何快速了解一个领域/写综述

    1 先去找本领域的综述 xff08 最新 xff09 文章刚开始可以是中文方便理解 2 去找本领域硕博论文选一个高引用的去看 3 选择本领域经典论文 现在知网 万方等数据库都有文献推荐如下 以知网为例 选择知识追踪综述 改进知识追踪模型对提
  • LaTeX快速入门

    可参考文件 LaTeX零基础入门教程https www jianshu com p 3e842d67ada2 各种小技巧https zhuanlan zhihu com p 56024243 查看本地说明文档 ctex宏包的使用方法 查看c
  • 面向个性化学习的数据挖掘方法与应用研究1

  • EKPT模型

    面向个性化学习的数据挖掘方法与应用研究2 EKPT模型
  • docker搭建PyPI服务器

    运行 docker 服务器添加用户使用方法 上传 package使用仓库安装 package 运行 docker 服务器 首先创建服务器文件存放目录 xff08 如 pypi xff09 xff0c 进入目录 使用镜像 codekoala
  • 高维数据可视化之t-SNE算法

    https blog csdn net hustqb article details 78144384 t sne数学原理https zhuanlan zhihu com p 57937096 什么是t SNE xff1f t SNE的主要
  • Dynamic Key-Value Memory Networks for Knowledge Tracing论文阅读

    DKVMN模型效果不是很好 xff0c 但提供了很多新颖的方法思路 xff0c 最近看几篇文章都重点提到了这个模型并对这个模型进行改进 xff0c 回头仔细看一下这篇论文 动机 将KT公式化为监督序列学习问题 BKT和DKT 本文模型 本文
  • 记忆网络外部存储器

    结构化的外部记忆 记忆网络通常由四个模块构成 xff1a 主网络 外部记忆单元 读取模块 以及写入模块 主网络 也叫做控制器 xff0c 任务是解决内容和外界的交互 外部记忆单元负责存储信 息 xff0c 由很多记忆片段组成 xff0c 它
  • 简单爬虫入门

    来源莫烦爬虫 https mofanpy com tutorials data manipulation scraping understand website 爬网页流程 选着要爬的网址 url 使用 python 登录上这个网址 url
  • 正则表达式

    正则表达式这一篇就够了 xff0c 记录学习方便回来查找 文章来源https mofanpy com tutorials python basic basic regular expression https www cnblogs com
  • 数据可视化之 Matplotlib

    可参考 https mofanpy com tutorials data manipulation plt 基本用法 set new sticks new ticks 61 np linspace 1 2 5 print new ticks
  • 爬虫学习之下载图片

    首先找到网页的图片地址如 网址为 xff1a https i0 hdslb com bfs face 03525d094e0e2a142d08181532d729615c18ec92 jpg 找到了这个网址 我们就能开始下载了 为了下载到一
  • Python刷题之两数之和

    刷题之旅开始 day1 给定一个整数数组 nums 和一个整数目标值 target xff0c 请你在该数组中找出 和为目标值 的那 两个 整数 xff0c 并返回它们的数组下标 你可以假设每种输入只会对应一个答案 但是 xff0c 数组中
  • day2两数相加

    给你两个 非空 的链表 xff0c 表示两个非负的整数 它们每位数字都是按照 逆序 的方式存储的 xff0c 并且每个节点只能存储 一位 数字 请你将两个数相加 xff0c 并以相同形式返回一个表示和的链表 你可以假设除了数字 0 之外 x
  • day3三数之和

    给你一个包含 n 个整数的数组 nums xff0c 判断 nums 中是否存在三个元素 a xff0c b xff0c c xff0c 使得 a 43 b 43 c 61 0 xff1f 请你找出所有和为 0 且不重复的三元组 注意 xf

随机推荐

  • Nginx常见日志分析

    日志格式 39 remote addr remote user time local 34 request 34 status body bytes sent 34 http referer 34 34 http user agent 34
  • python爬虫入门之http协议和 Chrome 浏览器抓包工具

    在浏览器中发送一个http请求的过程 1 当用户在浏览器的地址栏中输入一个URL并按回车键之后 xff0c 浏览器会向HTTP服务器发送HTTP请求 HTTP请求主要分为 Get 34 和 Post 34 两种方法 当我们在浏览器输入URL
  • python爬虫之urllib库学习

    urllib库 urllib库是Python中一个最基本的网络请求库 可以模拟浏览器的行为 xff0c 向指定的服务器发送一个请求 xff0c 并可以保存服务器返 回的数据 urllib库是python内置的一个http请求库 xff0c
  • 爬虫练习之了解反爬虫机制

    没学习之前我理解字面意思就是你爬虫网站 xff0c 然后该网站顺着你的ip等会对你的网络电脑等造成损失 爬虫 使用任何技术手段批量获取网站信息的一种方式 xff0c 关键在批量 反爬虫 使用任何技术手段 xff0c 阻止别人批量获取自己网站
  • python爬虫之cookie

    python爬虫之cookie 什么是cookie 在网站中 xff0c http请求是无状态的 也就是说即使第一次和服务器连接后并且登录成功后 xff0c 第二次请求服务器依然不能知道当前请求是哪个用户 cookie的出现就是为了解决这个
  • python爬虫之request库

    发送get请求 1 最简单的发送get请求就是通过requests get来调用 response 61 requests get 34 URL 34 构造一个向服务器请求资源的Request对象 xff0c 返回一个包含服务器资源的Res
  • 爬虫之数据的提取 使用XPath 及lxml 初学者必备

    一 XPATH是什么 xff1f 干什么用的 xff1f xpath xff08 XML Path Language xff09 是一门在XML和HTML文档中查找信息的语言 xff0c 可用来在XML和HTML文档中对元素和属性进行遍历
  • 刷题之sum-closest

    给定一个包括 n 个整数的数组 nums 和 一个目标值 target 找出 nums 中的三个整数 xff0c 使得它们的和与 target 最接近 返回这三个数的和 假定每组输入只存在唯一答案 示例 xff1a 输入 xff1a num
  • 使用requests和xpath爬取电影天堂

    import requests from lxml import etree from openpyxl import Workbook URL 61 39 https dytt8 net html gndy dyzz list 23 1
  • day4数组之 删除排序数组中的重复项

    26删除排序数组中的重复项 给定一个排序数组 xff0c 你需要在 原地 删除重复出现的元素 xff0c 使得每个元素只出现一次 xff0c 返回移除后数组的新长度 不要使用额外的数组空间 xff0c 你必须在 原地 修改输入数组 并在使用
  • 爬虫之BeautifulSoup4库详解

    BeautifulSoup4库 和 lxml 一样 xff0c Beautiful Soup 也是一个HTML XML的解析器 xff0c 主要的功能也是如何解析和提取 HTML XML 数据 lxml 只会局部遍历 xff0c 而Beau
  • 在 VirtualBox 中安装 Debian 虚拟机

    在 VirtualBox 中安装 Debian 虚拟机 手把手一步一步带你在VirtualBox中安装Debian虚拟机 xff1b 打开VirtualBox软件点击新建 xff1a 配置信息 xff08 示例 xff09 xff1a 名称
  • 爬虫中国天气网数据并可视化

    中国天气网爬虫数据可视化 爬虫功能网页分析 以华北地区为例分析网页源代码 1 以谷歌浏览器为例分析2 提取特征标签3 分析源代码利用requests库获取目标网页源代码利用BeautifulSoup库提取天气信息港澳台地区代码分析分析数据数
  • day5刷题之 删除排序数组中的重复项 II

    80 删除排序数组中的重复项 II 难度中等361 给定一个增序排列数组 nums xff0c 你需要在 原地 删除重复出现的元素 xff0c 使得每个元素最多出现两次 xff0c 返回移除后数组的新长度 不要使用额外的数组空间 xff0c
  • day7刷题之二分搜索2

    33 搜索旋转排序数组 难度中等1187收藏分享切换为英文接收动态反馈 升序排列的整数数组 nums 在预先未知的某个点上进行了旋转 xff08 例如 xff0c 0 1 2 4 5 6 7 经旋转后可能变为 4 5 6 7 0 1 2 x
  • day6刷题之二分搜索1

    二分查找代码 class Solution public int searchInsert int nums int target int left 61 0 right 61 nums length 1 注意循环条件 while left
  • 正则表达式补充篇

    1 re match和re search match 和search 的区别 xff1a match xff08 xff09 函数只检测RE是不是在string的开始位置匹配 xff0c search 会扫描整个string查找匹配matc
  • 爬虫实战之爬取古诗文网站 (详细)

    爬取古诗文网站 重点是练习正则表达式的使用 链接变化 url base 61 39 https www gushiwen cn default aspx 39 for i in range 1 2 print 39 正在爬取第 页 xff1
  • 利用Python爬取糗事百科段子信息

    有个博客很详细https blog csdn net weixin 42488570 article details 80794087 要求 xff1a 用户ID xff0c 用户等级 xff0c 用户性别 xff0c 发表段子文字信息 x
  • 爬虫之数据存储(json,csv,mysql)等

    JSON支持数据格式 xff1a 对象 xff08 字典 xff09 使用花括号 数组 xff08 列表 xff09 使用方括号 整形 浮点型 布尔类型还有null类型 字符串类型 xff08 字符串必须要用双引号 xff0c 不能用单引号