日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
使用Python連接MySQL數(shù)據(jù)庫

本篇文章使用python中的pymysql庫連接MySQL數(shù)據(jù)庫,并完成建表,數(shù)據(jù)寫入和查詢的過程。為了保證內(nèi)容的完整性,我們將內(nèi)容分為兩個 階段,***階段簡單介紹數(shù)據(jù)的爬取過程??催^之前爬蟲文章的同學(xué)請直接忽略。第二階段介紹將爬去的數(shù)據(jù)寫入MySQL數(shù)據(jù)庫的過程。

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:域名注冊、網(wǎng)絡(luò)空間、營銷軟件、網(wǎng)站建設(shè)、??稻W(wǎng)站維護、網(wǎng)站推廣。

1,使用python抓取并提取數(shù)據(jù)

***階段介紹數(shù)據(jù)爬取過程,首先導(dǎo)入所需的庫文件,主要包括requests,re和pandas三個庫。具體作用在注釋中進行了說明,這里不再贅述。

 
 
 
 
  1. #導(dǎo)入requests庫(請求和頁面抓取) 
  2. import requests 
  3. #導(dǎo)入正則庫(從頁面代碼中提取信息) 
  4. import re 
  5. #導(dǎo)入科學(xué)計算庫(拼表及各種分析匯總) 
  6. import pandas as pd 

設(shè)置爬取請求中的頭文件信息。

 
 
 
 
  1. #設(shè)置請求中頭文件的信息 
  2. headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64  
  3. Safari/537.11', 
  4. 'Accept':'text/html;q=0.9,*/*;q=0.8', 
  5. 'Accept-Charset':'ISO-8859-1,utf-8;q=0.7,*;q=0.3', 
  6. 'Connection':'close', 
  7. 'Referer':'https://www.baidu.com/' 

開始抓取數(shù)據(jù),并查看抓取到的網(wǎng)頁內(nèi)容。這里我們所需要的數(shù)據(jù)還在頁面源碼中,需要使用正則表達式進行提取。

 
 
 
 
  1. #抓取并保存頁面信息 
  2. r=requests.get('http://www.p2peye.com/shuju/ptsj/',headers=headers) 
  3. html=r.content 
  4. #對抓取的頁面進行編碼 
  5. html=str(html, encoding = "GBK") 
  6. #查看抓取的頁面源碼 
  7. html 

使正則表達式從抓取到的網(wǎng)頁源碼中提取所需數(shù)據(jù)。這里我們一共提取9個字段。

 
 
 
 
  1. #使用正則提取title字段信息 
  2. title=re.findall(r'"return false".*?title="(.*?)"',html) 
  3. #使用正則提取total字段信息 
  4. total=re.findall(r'"total">(.*?)萬<',html) 
  5. #使用正則提取rate字段信息 
  6. rate=re.findall(r'"rate">(.*?)<',html) 
  7. #使用正則提取pnum字段信息 
  8. pnum=re.findall(r'"pnum">(.*?)人<',html) 
  9. #使用正則提取cycle字段信息 
  10. cycle=re.findall(r'"cycle">(.*?)月<',html) 
  11. #使用正則提取plnum字段信息 
  12. p1num=re.findall(r'"p1num">(.*?)人<',html) 
  13. #使用正則提取fuload字段信息 
  14. fuload=re.findall(r'"fuload">(.*?)分鐘<',html) 
  15. #使用正則提取alltotal字段信息 
  16. alltotal=re.findall(r'"alltotal">(.*?)萬<',html) 
  17. #使用正則提取captial字段信息 
  18. capital=re.findall(r'"capital">(.*?)萬<',html) 

查看其中一個字段的信息,這里我們查看平臺名稱title的提取結(jié)果。

 
 
 
 
  1. #查看title字段信息 
  2. title 

到這里***階段的數(shù)據(jù)爬取工作完成了,現(xiàn)在我們有9個字段的數(shù)據(jù),在下一階段中我們將連接MySQL數(shù)據(jù)庫,并將這9個字段的數(shù)據(jù)寫到數(shù)據(jù)庫里。

2,連接MySQL數(shù)據(jù)庫寫入并讀取數(shù)據(jù)

在第二階段,我們使用python的pymysql庫連接MySQL數(shù)據(jù)庫。如果你是***次使用這個庫需要先通過pip install pymysql進行安裝,然后導(dǎo)入pymysql庫文件。

 
 
 
 
  1. #導(dǎo)入pymysql庫 
  2. import pymysql 

首先連接MySQL數(shù)據(jù)庫,這里需要輸入數(shù)據(jù)庫的ip地址,用戶名,密碼,數(shù)據(jù)庫名稱,端口號等信息。我在這里只簡單些了ip地址,用戶名和數(shù)據(jù)庫名稱。每個參數(shù)的內(nèi)容請按你數(shù)據(jù)庫的實際信息進行填寫。

 
 
 
 
  1. #打開數(shù)據(jù)庫連接 
  2. db = pymysql.connect("192.168.0.1","root","","shuju_test" ) 

使用 cursor()創(chuàng)建一個游標(biāo)對象

 
 
 
 
  1. # 使用 cursor() 方法創(chuàng)建一個游標(biāo)對象 cursor 
  2. cursor = db.cursor() 

在數(shù)據(jù)庫中創(chuàng)建一個包含9個字段的數(shù)據(jù)表,用于寫入數(shù)據(jù)。這里具體分為兩步,***步寫出創(chuàng)建數(shù)據(jù)表的SQL語句。第二步使用execute()執(zhí)行SQL語句

 
 
 
 
  1. #創(chuàng)建一個表 
  2. sql1 = "CREATE TABLE wdty7( title varchar(255), total varchar(255), rate varchar(255), people_num varchar(255), cycle  
  3. varchar(255), people_lend_num varchar(255), full_load varchar(255), all_total varchar(255), capital varchar(255)) " 
  4.   
  5. # 使用 execute() 方法執(zhí)行 SQL 語句 
  6. cursor.execute(sql1) 

創(chuàng)建完數(shù)據(jù)表后,開始寫入數(shù)據(jù),這里我們使用for循環(huán)向數(shù)據(jù)表中逐條寫入9個字段的數(shù)據(jù)。

 
 
 
 
  1. #向表中創(chuàng)建新的記錄 
  2. for i in range(len(title)): 
  3. sql="INSERT INTO `wdty6`(`title`, `total`, `rate`, `people_num`, `cycle`, `people_lend_num`, `full_load`, `all_total`,  
  4. `capital`)VALUES ( %s, %s, %s, %s, %s, %s, %s, %s, %s);" 
  5. values=(title[i].encode("utf-7").decode("latin1"),total[i],rate[i],pnum[i],cycle[i],p1num[i],fuload[i],alltotal  
  6. [i],capital[i]) 
  7. cursor.execute(sql,values) 
  8. db.commit() 

創(chuàng)建一個查詢語句并使用execute()方法執(zhí)行查詢。

 
 
 
 
  1. #設(shè)置查詢語句 
  2. sql1="SELECT * FROM wdty6 where cycle>0.6;" 
  3.   
  4. # 使用 execute() 方法執(zhí)行 SQL 查詢  
  5. cursor.execute(sql1) 

使用fetchall()獲取剛才寫入的所有9個字段的數(shù)據(jù),并保存在data中。

 
 
 
 
  1. #使用fetchall()方法獲取所有數(shù)據(jù) 
  2. data = cursor.fetchall() 

將data中的數(shù)據(jù)轉(zhuǎn)為pandas的DataFrame格式。

 
 
 
 
  1. #將獲取數(shù)據(jù) 
  2. import pandas as pd 
  3. columns=["title", "total", "rate", "people_num", "cycle", "people_lend_num", "full_load", "all_total", "capital"] 
  4. df = pd.DataFrame(list(data),columns=columns) 

查看從數(shù)據(jù)庫中提取的數(shù)據(jù),這里有個問題,平臺名稱title字段中的中文在寫入數(shù)據(jù)庫后變成了亂碼,應(yīng)該是編碼轉(zhuǎn)換的問題。目前還沒有找到解決辦法。如有知道解決辦法的朋友請賜教。

 
 
 
 
  1. #查看數(shù)據(jù)表  
  2. df.head() 

***,完成所有操作后關(guān)閉數(shù)據(jù)庫的連接。

 
 
 
 
  1. # 關(guān)閉數(shù)據(jù)庫連接 
  2. db.close() 

網(wǎng)頁題目:使用Python連接MySQL數(shù)據(jù)庫
網(wǎng)頁路徑:http://m.5511xx.com/article/cccesco.html