1、下載與安裝mysql5.6
2、數據庫的基本操做
3、python代碼鏈接數據庫
4、將爬蟲信息保存到mysql數據庫
1、下載與安裝mysql5.6
下載和安裝請看鏈接【MySQL數據庫下載與安裝詳細教程】html
2、數據庫的基本操做
cmd命令行下輸入如下命令python
登錄
mysql -u root -p
密碼 (輸本身安裝時候設置的)
就能夠看到登錄成功的界面mysql
建立數據庫
【python操做時候先要建立好數據庫,因此這一步必不可少】
create database 數據庫名 [其餘選項];
例如咱們須要建立一個名爲 samp_db 的數據庫
create database samp_db
create database samp_db character set gbk;能夠加上指定的編碼類型sql
show databases; 命令查看已經建立了哪些數據庫。數據庫
兩種方式對數據庫進行使用的選擇:
一:在登陸數據庫時指定, 命令: mysql -D 所選擇的數據庫名 -h 主機名 -u 用戶名 -p
例如登陸時選擇剛剛建立的數據庫: mysql -D samp_db -u root -p
二:在登陸後使用 use 語句指定, 命令: use 數據庫名;
use 語句能夠不加分號, 執行 use samp_db 來選擇剛剛建立的數據庫, 選擇成功後會提示: Database changedapp
建立數據庫表
使用 create table 語句可完成對錶的建立, create table 的常見形式:
create table 表名稱(列聲明);
以建立 students 表爲例, 表中將存放 學號(id)、姓名(name)、性別(sex)、年齡(age)、聯繫電話(tel) 這些內容:
create table students
(
id int unsigned not null auto_increment primary key,
name char(100) not null,
sex char(10) not null,
age tinyint unsigned not null,
tel char(13) null default 「-」
);編輯器
show variables like ‘char%’; 查看編碼值工具
set names ‘gbk’; 更改編碼(能夠解決輸入中文亂碼狀況)ui
show tables; 命令可查看已建立了表的名稱;
describe 表名; 命令可查看已建立的表的詳細信息。編碼
插入信息
insert into students values(NULL, 「王剛」, 「男」, 20, 「13811371377」);插入每列項的值的狀況
insert into students (name, sex, age) values(「孫麗華」, 「女」, 21);插入其中列的值
查看錶信息
查表中的name,age的信息.
select name, age from students;
也可使用通配符 * 查詢表中全部的內容, 語句:
select * from students;
以查詢全部性別爲女的信息爲例, 輸入查詢語句:
select * from students where sex=「女」;
where 子句不只僅支持 「where 列名 = 值」 這種名等於值的查詢形式, 對通常的比較運算的運算符都是支持的,
例如 =、>、<、>=、<、!= 以及一些擴展運算符 is [not] null、in、like 等等。
還能夠對查詢條件使用 or 和 and 進行組合查詢
select * from students where id<5 and age>20;
更新表中的數據
使用示例:
將id爲5的手機號改成默認的"-": update students set tel=default where id=5;
將全部人的年齡增長1: update students set age=age+1;
將手機號爲 13288097888 的姓名改成 「張偉鵬」, 年齡改成 19: update students set name=「張偉鵬」, age=19 where tel=「13288097888」;
刪除表中的數據
delete 語句用於刪除表中的數據, 基本用法爲:
delete from 表名稱 where 刪除條件;
使用示例:
刪除id爲2的行: delete from students where id=2;
刪除全部年齡小於21歲的數據: delete from students where age<20;
刪除表中的全部數據: delete from students;
建立後表的修改
添加列
在表的最後追加列 address: alter table students add address char(60);
在名爲 age 的列後插入列 birthday: alter table students add birthday date after age;
修改列
基本形式: alter table 表名 change 列名稱 列新名稱 新數據類型;
示例:
將表 tel 列更名爲 telphone: alter table students change tel telphone char(13) default 「-」;
將 name 列的數據類型改成 char(16): alter table students change name name char(16) not null;
刪除列
基本形式: alter table 表名 drop 列名稱;
示例:
刪除 birthday 列: alter table students drop birthday;
重命名錶
基本形式: alter table 表名 rename 新表名;
示例:
重命名 students 表爲 workmates: alter table students rename workmates;
刪除整張表
基本形式: drop table 表名;
示例: 刪除 workmates 表: drop table workmates;
刪除整個數據庫
基本形式: drop database 數據庫名;
示例: 刪除 samp_db 數據庫: drop database samp_db;
修改 root 用戶密碼
使用 mysqladmin 方式:
打開命令提示符界面, 執行命令: mysqladmin -u root -p password 新密碼
執行後提示輸入舊密碼完成密碼修改, 當舊密碼爲空時直接按回車鍵確認便可。
可視化管理工具 MySQL Workbench
儘管咱們能夠在命令提示符下經過一行行的輸入或者經過重定向文件來執行mysql語句, 但該方式效率較低,
因爲沒有執行前的語法自動檢查, 輸入失誤形成的一些錯誤的可能性會大大增長,
這時不妨試試一些可視化的MySQL數據庫管理工具, MySQL Workbench
就是 MySQL 官方 爲 MySQL 提供的一款可視化管理工具, 你能夠在裏面經過可視化的方式直接管理數據庫中的內容,
而且 MySQL Workbench 的 SQL 腳本編輯器支持語法高亮以及輸入時的語法檢查, 固然, 它的功能強大, 毫不僅限於這兩點。
MySQL Workbench官方介紹: http://www.mysql.com/products/workbench/
MySQL Workbench 下載頁: http://dev.mysql.com/downloads/tools/workbench/
3、python代碼鏈接數據庫
一、安裝pymysql庫
cmd運行pip install pymysql
二、代碼建表
import pymysql
db = pymysql.connect("localhost", "root", "admin", "test1")#admin爲本身數據庫密碼,test1爲本身cmd中建立的數據庫名
cursor = db.cursor()
cursor.execute("drop table if exists fin;") #若是存在fin表時候先刪除
sql = '''create table fin
(
id int unsigned not null auto_increment primary key,
姓名 char(100) not null,
性別 char(4) not null,
年齡 tinyint unsigned not null,
電話 char(13) null default "-"
);'''
cursor.execute(sql)
db.close()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
結果可在cmd命令行數據庫中查看,如圖:
3,代碼向表中插入內容
import pymysql
db = pymysql.connect("localhost", "root", "admin", "test1")#admin爲本身數據庫密碼,test1爲本身cmd中建立的數據庫名
cursor = db.cursor()
# cursor.execute("drop table if exists fin;") #若是存在fin表時候先刪除
# sql = '''create table fin
# (
# id int unsigned not null auto_increment primary key,
# 姓名 char(100) not null,
# 性別 char(4) not null,
# 年齡 tinyint unsigned not null,
# 電話 char(13) null default "-"
# );'''
# cursor.execute(sql)
name = '李白'
sex = '男'
age = '20'
tel = '123456789'
sql = "insert into fin (姓名,性別,年齡,電話) values ('%s','%s','%s','%s');" % (name, sex, age, tel)
cursor.execute(sql)
#爲了遵循mysql語法也能夠用如下兩句字符串拼接
#sql = 'insert into fin (姓名,性別,年齡,電話) values (\"'+name+'\",\"'+sex+'\",\"'+age+'\",\"'+tel+'\");'
#cursor.execute(sql)
db.commit()
db.close()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
結果如圖:
4、將爬蟲信息保存到mysql數據庫
import requests
from bs4 import BeautifulSoup
import pymysql
list_url = []#存儲生成的從第一頁到第5頁的網頁鏈接
list_info_experience = []#存儲求職要求經驗
list_info_education = []#存儲求職要求學歷
list_info_money = []#存儲求職要求薪資區間
list_name = []#存儲求職公司名稱
db = pymysql.connect("localhost", "root", "admin", "Myinterview")
cursor = db.cursor()
#mysql建表
def Create_Table(cursor):
cursor.execute("drop table if exists employee;") # 若是存在fin表時候先刪除
sql = '''create table employee
(
id int unsigned not null auto_increment primary key,
公司名稱 char(100) not null,
工做經驗 char(50) not null,
學歷要求 char(50) not null,
薪資範圍 char(50) null default "-"
);'''
cursor.execute(sql)
#插入爬取的信息
def Mysql_Content(cursor,JobName, JobExperience, JobEducation, JobMoney):
print(JobName, JobExperience, JobEducation, JobMoney)
sql = 'INSERT INTO employee(公司名稱,工做經驗,學歷要求,薪資範圍) VALUES (\"' + JobName + '\",\"' + JobExperience + '\",\"' + JobEducation + '\",\"' + JobMoney + '\")'
#print(sql)
cursor.execute(sql)
db.commit()
#網頁有不少頁,這裏把每一頁的鏈接存儲在list_url中
def Make_Url():
for i in range(1, 4):
global URL
URL = 'https://www.jobui.com/jobs?jobKw=python&cityKw=%E5%8C%97%E4%BA%AC&n={}'.format(i)
list_url.append(URL)
#print(list_url)
#獲取給定URL頁的html信息
def Get_Wb(URL):
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'}
wb_data = requests.get(URL, headers=headers)
global soup
soup = BeautifulSoup(wb_data.content, 'lxml')
#print(soup)
#獲取每家公司的名稱
def Get_Name():
names = soup.select('#search-match > div.header-2014 > div.astruct.cfix > div.aleft > div.jk-box.jk-matter.j-jobInfo > ul > li > div > div > div.cfix > a')
for i in names:
list_name.append(i.get_text().strip())
#獲取每家公司的經驗要求,學歷要求,薪資區間
def Get_Msg():
for i in range(1, 16):
xxx = 'div.header-2014 > div.astruct.cfix > div.aleft > div.jk-box.jk-matter.j-jobInfo > ul > li:nth-of-type({}) > div > div > div:nth-of-type(4)'.format(i)
#print(xxx)
msg = soup.select(xxx)
#print(msg)
for y in msg:
info = y.get_text()
info = info.split('|')#將經驗要求,學歷要求,薪資區間3個信息,以|分割開,存儲爲列表格式
list_info_experience.append(info[0].strip())
list_info_education.append(info[1].strip())
list_info_money.append(info[2].strip())
#最後以字典形式輸出
def DictOutput():
for JobName, JobExperience, JobEducation, JobMoney in zip(list_name, list_info_experience, list_info_education, list_info_money):
AllData = {'公司名稱': JobName,
'工做經驗': JobExperience,
'學歷要求': JobEducation,
'薪資範圍': JobMoney
}
print(AllData)
Mysql_Content(cursor, JobName, JobExperience, JobEducation, JobMoney)
print('北京市招聘信息')
Make_Url()
#先輸出3頁
for i in range(0, 3):
Get_Wb(list_url[i])
#print(list_url[i])#所爬取的網頁連接
Get_Msg()
Get_Name()
Create_Table(cursor)
DictOutput()
db.close()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
結果如圖:
------------------------------------------------------------------------ 謝謝支持! --------------------- 做者:Progial 來源:CSDN 原文:https://blog.csdn.net/qq_43371004/article/details/84182891