2024年Python最全Python爬虫之数据的存储(1),字节跳动 面试问题

最后

Python崛起并且风靡,因为优点多、应用领域广、被大牛们认可。学习 Python 门槛很低,但它的晋级路线很多,通过它你能进入机器学习、数据挖掘、大数据,CS等更加高级的领域。Python可以做网络应用,可以做科学计算,数据分析,可以做网络爬虫,可以做机器学习、自然语言处理、可以写游戏、可以做桌面应用…Python可以做的很多,你需要学好基础,再选择明确的方向。这里给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

👉Python所有方向的学习路线👈

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

👉Python必备开发工具👈

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

👉Python全套学习视频👈

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

👉实战案例👈

学python就与学数学一样,是不能只看书不做题的,直接看步骤和答案会让人误以为自己全都掌握了,但是碰到生题的时候还是会一筹莫展。

因此在学习python的过程中一定要记得多动手写代码,教程只需要看一两遍即可。

👉大厂面试真题👈

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

data[0].get(‘name’)

推荐使用get方法,即使键名不存在也不会报错。


* 注意、JSON的数据需要用**双引号**包围起来,而不能使用单引号。



读取JSON文本文件 法1:

with open(‘data.json’,encoding=‘utf-8’) as file:
str = file.read()
data = json.loads(str)
print(data)

读取JSON文本文件 法2:

data = json.load(open(‘data.json’,encoding=‘utf-8’))
print(data)


### 3、输出JSON


调用**dumps方法**将JSON对象转化为字符串。



import json

data = [{
‘name’:‘Bob’,
‘gender’:‘male’,
‘birthday’:‘1992-10-18’
}]
with open(‘data.json’,‘w’,encoding=‘utf-8’) as file:
file.write(json.dumps(data))


* 若想保存JSON对象的缩进格式,可以再往dumps方法中添加一个参数**indent,代表缩进字符的个数。**



with open(‘data.json’,‘w’,encoding=‘utf-8’) as file:
file.write(json.dumps(data,indent=2))


要想**输出中文**,还需要**指定参数ensure\_ascii为False**,以及规定文件输出的编码:



with open(‘data.json’,‘w’,encoding=‘utf-8’) as file:
file.write(json.dumps(data,indent=2,ensure_ascii=False))


## 三、CSV文件存储


CSV,全称Comma-Separated Values,中文叫做逗号分隔值或字符分隔值,其文件**以纯文本形式\*\*\*\*存储表格数据**。


### 1、写入



import csv

with open(‘data.csv’,‘w’) as csvfile: # 打开data.csv文件,指定模式为写入。
writer = csv.writer(csvfile) # 使用csv库的writer方法初始化对象
writer.writerow([‘id’,‘name’,‘age’])# 调用writerow方法传入每行的数据
writer.writerow([‘10001’,‘Mike’,‘20’])
writer.writerow([‘10002’,‘Bob’,‘22’])
writer.writerow([‘10003’,‘Jordan’,‘21’])


* 若要修改列与列之间的分隔符,传入**delimiter参数**:



with open(‘data.csv’,‘w’) as csvfile:
writer = csv.writer(csvfile,delimiter=’ ')
writer.writerow([‘id’,‘name’,‘age’])


* 也可调用**writerows写入多行**,此时参数需要传入二维列表:



with open(‘data.csv’,‘w’) as csvfile:
writer = csv.writer(csvfile)
writer.writerow([‘id’,‘name’,‘age’])
writer.writerow([[‘10001’,‘Mike’,‘20’],[‘10002’,‘Bob’,‘22’],[‘10003’,‘Jordan’,‘21’]])


* **一般情况下,爬虫爬取到的都是结构化数据,我们一般会用字典表示这种数据。csv也提供了字典的写入方式。**



with open(‘data.csv’,‘w’) as csvfile:
fieldnames = [‘id’,‘name’,‘age’]
writer = csv.DictWriter(csvfile,fieldnames=fieldnames)
writer.writeheader()
writer.writerow({‘id’:‘10001’,‘name’:‘Mike’,‘age’:‘20’})
writer.writerow({‘id’:‘10002’,‘name’:‘Bob’,‘age’:‘22’})
writer.writerow({‘id’:‘10003’,‘name’:‘Jordan’,‘age’:‘21’})

需要追加模式则w改为a

要写入中文则,添加编码格式encoding=‘utf-8’


### 2、读取



with open(‘data.csv’,‘r’,encoding=‘utf-8’) as csvfile:
reader = csv.reader(csvfile)
for row in reader:
print(row)


## 四、MySql存储


* 关系型数据库是基于关系模型的数据库,而关系模型是通过二维表来保存的,所以关系型数据库中数据的存储方式就是行列组成的 表,每一列代表一个字段,每一行代表一条记录。
* 表可以看做某个实体的集合,实体之间存在的联系需要通过表与表之间的关联关系体现。


### 1、准备工作



pip3 install pymysql


### 2、连接数据库



import pymysql

db = pymysql.connect(host=‘127.0.0.1’, user=‘root’, password=‘password’, port=3306)
cursor = db.cursor()
cursor.execute(‘SELECT VERSION()’)
data = cursor.fetchone()
print(‘Database version:’, data)

创建数据库

cursor.execute(“CREATE DATABASE spiders DEFAULT CHARACTER SET utf8mb4”)
db.close()

通过pymysql的connect方法声明了一个MySQL对象db,传入MySQL运行的host、user(用户名)、password(密码)、port(端口号)。

连接成功后,调用cursor方法获得MySQL的操作游标,利用游标可以执行MySQL语句。

第一个SQL语句用于获得MySQL的当前版本,然后调用fetchone方法得到了第一条数据,即版本号

第二个SQL语句用于创建数据库spiders,默认编码为UTF-8。


### 3、创建表



db = pymysql.connect(host=‘127.0.0.1’, user=‘root’, password=‘password’, port=3306,db= ‘spiders’)
cursor = db.cursor()

创建一个名为students的数据表

sql = ‘CREATE TABLE IF NOT EXISTS students (id VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, age INT NOT NULL, PRIMARY KEY (id))’
cursor.execute(sql)
db.close()


### 4、插入数据



data = {
‘id’: ‘20120001’,
‘name’: ‘Bob’,
‘age’: 20
}
table = ‘students’
keys = ‘,’.join(data.keys()) # id,name,age
values = ‘,’.join([‘%s’] * len(data)) # %s,%s,%s
sql = ‘INSERT INTO {table}({keys}) VALUES ({values})’.format(table=table, keys=keys, values=values)
try:
if cursor.execute(sql, tuple(data.values())):
print(‘Successful’)
db.commit()
except:
print(‘Failed’)
db.rollback()
db.close()

首先构造需要插入的字段:id,name和age。


### 5、更新数据



data = {
‘id’: ‘20120001’,
‘name’: ‘Bob’,
‘age’: 21
}
table = ‘students’
keys = ‘,’.join(data.keys())
values = ‘,’.join([‘%s’] * len(data))

sql = 'INSERT INTO {table}({keys}) VALUES ({values}) ON DUPLICATE KEY UPDATE '.format(table=table, keys=keys, values=values)
update = ‘,’.join([“{key} = %s”.format(key=key) for key in data])
sql += update
try:
if cursor.execute(sql, tuple(data.values())*2):
print(‘Successful’)
db.commit()
except:
print(‘Failed’)
db.rollback()
db.close()


### 6、删除数据



table = ‘students’
condition = ‘age > 20’
keys = ‘,’.join(data.keys())
values = ‘,’.join([‘%s’] * len(data))

删除数据

sql = ‘DELETE FROM {table} WHERE {condition}’.format(table=table,condition=condition)
try:
cursor.execute(sql)
print(‘Successful’)
db.commit()
except:
print(‘Failed’)
db.rollback()
db.close()


### 7、查询数据



sql = ‘SELECT * FROM students WHERE age >= 20’
try:
cursor.execute(sql)
print(‘Count:’,cursor.rowcount)
row = cursor.fetchone()
while row:
print(‘Row:’,row)
row = cursor.fetchone()
except:
print(‘Error’)

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、全套PDF电子书

书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。

四、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

五、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 10
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值