Python之sqlite3数据库
Python之sqlite3数据库
一.splite3的构建
关于splite3的知识,可以参考:链接
import sqlite3
import os
path=os.getcwd()
conn=sqlite3.connect(path+'\\db.db')
cur=conn.cursor()
二.存储数据的爬取
我们以快代理的ip地址作为存储对象
import pandas as pd
url="https://www.kuaidaili.com/free/inha/1/"
df=pd.read_html(url,encoding="utf-8")[0] # [0]:表示第一个table,多个table需要指定,如果不指定默认第一个
df
IP | PORT | 匿名度 | 类型 | 位置 | 响应速度 | 最后验证时间 | |
---|---|---|---|---|---|---|---|
0 | 122.4.40.6 | 9999 | 高匿名 | HTTP | 山东省济南市 电信 | 1秒 | 2020-04-29 19:31:01 |
1 | 118.212.107.180 | 9999 | 高匿名 | HTTP | 江西省新余市 联通 | 0.9秒 | 2020-04-29 18:31:01 |
2 | 125.108.84.240 | 9000 | 高匿名 | HTTP | 浙江省温州市 电信 | 2秒 | 2020-04-29 17:31:01 |
3 | 220.191.43.95 | 9000 | 高匿名 | HTTP | 浙江省杭州市 电信 | 2秒 | 2020-04-29 16:31:01 |
4 | 171.35.223.24 | 9999 | 高匿名 | HTTP | 江西省新余市 联通 | 1秒 | 2020-04-29 15:31:01 |
5 | 1.199.31.211 | 9999 | 高匿名 | HTTP | 河南省济源市 电信 | 2秒 | 2020-04-29 14:31:01 |
6 | 180.118.128.246 | 9000 | 高匿名 | HTTP | 中国 江苏省 镇江市 电信 | 1秒 | 2020-04-29 13:31:02 |
7 | 123.101.214.244 | 9999 | 高匿名 | HTTP | 河南省鹤壁市 电信 | 3秒 | 2020-04-29 12:31:01 |
8 | 218.14.108.53 | 8060 | 高匿名 | HTTP | 广东省惠州市 电信 | 3秒 | 2020-04-29 11:31:01 |
9 | 36.249.49.38 | 9999 | 高匿名 | HTTP | 福建省泉州市 联通 | 0.3秒 | 2020-04-29 10:31:01 |
10 | 101.132.123.99 | 8080 | 高匿名 | HTTP | 上海市上海市 阿里云 | 2秒 | 2020-04-29 09:31:01 |
11 | 171.11.179.115 | 9999 | 高匿名 | HTTP | 河南省济源市 电信 | 1秒 | 2020-04-29 08:31:01 |
12 | 112.111.77.202 | 9999 | 高匿名 | HTTP | 福建省南平市 联通 | 1秒 | 2020-04-29 07:31:01 |
13 | 1.198.73.117 | 9999 | 高匿名 | HTTP | 河南省济源市 电信 | 0.7秒 | 2020-04-29 06:31:01 |
14 | 175.42.68.157 | 9999 | 高匿名 | HTTP | 福建省宁德市 联通 | 3秒 | 2020-04-29 05:31:01 |
三.数据表的创建
cur.execute('create table if not exists ip_proxy(id INTEGER primary key,ip TEXT,port INTEGER,anonymity TEXT,types TEXT,locations TEXT,respondingspeed TEXT,time TEXT)')
<sqlite3.Cursor at 0x23b8b513e30>
conn.commit()
存储数据
for i in list(df.index):
tmp=df.iloc[i].to_list()
tmp[1]=int(tmp[1])
data=[i+1]+tmp
cur.execute('insert into ip_proxy values (?,?,?,?,?,?,?,?)',tuple(data))
conn.commit()
四.数据展示
for row in cur.execute('select * from ip_proxy'):
print(row)
(1, '122.4.40.6', 9999, '高匿名', 'HTTP', '山东省济南市 电信', '1秒', '2020-04-29 19:31:01')
(2, '118.212.107.180', 9999, '高匿名', 'HTTP', '江西省新余市 联通', '0.9秒', '2020-04-29 18:31:01')
(3, '125.108.84.240', 9000, '高匿名', 'HTTP', '浙江省温州市 电信', '2秒', '2020-04-29 17:31:01')
(4, '220.191.43.95', 9000, '高匿名', 'HTTP', '浙江省杭州市 电信', '2秒', '2020-04-29 16:31:01')
(5, '171.35.223.24', 9999, '高匿名', 'HTTP', '江西省新余市 联通', '1秒', '2020-04-29 15:31:01')
(6, '1.199.31.211', 9999, '高匿名', 'HTTP', '河南省济源市 电信', '2秒', '2020-04-29 14:31:01')
(7, '180.118.128.246', 9000, '高匿名', 'HTTP', '中国 江苏省 镇江市 电信', '1秒', '2020-04-29 13:31:02')
(8, '123.101.214.244', 9999, '高匿名', 'HTTP', '河南省鹤壁市 电信', '3秒', '2020-04-29 12:31:01')
(9, '218.14.108.53', 8060, '高匿名', 'HTTP', '广东省惠州市 电信', '3秒', '2020-04-29 11:31:01')
(10, '36.249.49.38', 9999, '高匿名', 'HTTP', '福建省泉州市 联通', '0.3秒', '2020-04-29 10:31:01')
(11, '101.132.123.99', 8080, '高匿名', 'HTTP', '上海市上海市 阿里云', '2秒', '2020-04-29 09:31:01')
(12, '171.11.179.115', 9999, '高匿名', 'HTTP', '河南省济源市 电信', '1秒', '2020-04-29 08:31:01')
(13, '112.111.77.202', 9999, '高匿名', 'HTTP', '福建省南平市 联通', '1秒', '2020-04-29 07:31:01')
(14, '1.198.73.117', 9999, '高匿名', 'HTTP', '河南省济源市 电信', '0.7秒', '2020-04-29 06:31:01')
(15, '175.42.68.157', 9999, '高匿名', 'HTTP', '福建省宁德市 联通', '3秒', '2020-04-29 05:31:01')