新聞中心
Python是一種流行的編程語(yǔ)言,可以用于Web開(kāi)發(fā)、數(shù)據(jù)分析、機(jī)器學(xué)習(xí)等方面。在Web開(kāi)發(fā)中,獲取子頁(yè)面的數(shù)據(jù)庫(kù)是一個(gè)很常見(jiàn)的需求。在本文中,我們將介紹如何使用Python獲取子頁(yè)面的數(shù)據(jù)庫(kù)。

創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的肅寧網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
1. 確認(rèn)數(shù)據(jù)庫(kù)類(lèi)型及版本
我們需要了解子頁(yè)面使用的數(shù)據(jù)庫(kù)類(lèi)型及版本。因?yàn)椴煌?lèi)型的數(shù)據(jù)庫(kù)有不同的連接方式和API,而不同版本的數(shù)據(jù)庫(kù)也可能會(huì)有不同的API。另外,我們還需要知道數(shù)據(jù)庫(kù)的IP地址、用戶名和密碼等信息,這些信息通??梢詮淖禹?yè)面的配置文件或源代碼中獲取。
2. 安裝數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序
在Python中連接數(shù)據(jù)庫(kù)需要使用相應(yīng)的驅(qū)動(dòng)程序。我們需要根據(jù)子頁(yè)面使用的數(shù)據(jù)庫(kù)類(lèi)型安裝相應(yīng)的驅(qū)動(dòng)程序,例如:
– MySQL:使用MySQL官方提供的Python驅(qū)動(dòng)程序mysql-connector-python或者Python的DB API接口PyMySQL。
– PostgreSQL:使用Python的DB API接口psycopg2或者pg8000。
– Oracle:使用Oracle提供的Python驅(qū)動(dòng)程序cx_Oracle。
– MongoDB:使用Python的MongoDB驅(qū)動(dòng)程序pymongo。
我們可以使用pip命令來(lái)安裝這些驅(qū)動(dòng)程序,例如:
pip install mysql-connector-python
3. 連接數(shù)據(jù)庫(kù)
在安裝完成驅(qū)動(dòng)程序后,我們可以使用Python編寫(xiě)代碼連接數(shù)據(jù)庫(kù)。以下是連接MySQL數(shù)據(jù)庫(kù)的示例代碼:
import mysql.connector
# 連接數(shù)據(jù)庫(kù)
config = {
‘user’: ‘root’,
‘password’: ‘mypassword’,
‘host’: ‘127.0.0.1’,
‘database’: ‘mydatabase’
}
conn = mysql.connector.connect(**config)
# 獲取游標(biāo)
cur = conn.cursor()
在上述代碼中,我們首先定義了數(shù)據(jù)庫(kù)連接的配置信息,包括用戶名、密碼、主機(jī)和數(shù)據(jù)庫(kù)名稱(chēng)等。然后使用mysql.connector.connect()函數(shù)連接數(shù)據(jù)庫(kù),傳入配置信息作為參數(shù)。我們獲取游標(biāo)對(duì)象,可以使用游標(biāo)執(zhí)行SQL語(yǔ)句。
4. 查詢數(shù)據(jù)庫(kù)
連接成功后,我們可以使用游標(biāo)執(zhí)行SQL查詢語(yǔ)句并獲取結(jié)果。以下是查詢MySQL數(shù)據(jù)庫(kù)中所有用戶的示例代碼:
# 執(zhí)行查詢語(yǔ)句
cur.execute(“SELECT * FROM users”)
# 獲取所有結(jié)果
results = cur.fetchall()
# 遍歷所有結(jié)果
for row in results:
print(row)
在上述代碼中,我們使用游標(biāo)的execute()方法執(zhí)行SQL查詢語(yǔ)句,并使用fetchall()方法獲取查詢結(jié)果。查詢結(jié)果返回的是一個(gè)二維數(shù)組,每一行代表一條記錄,每一列代表一條記錄的屬性。我們可以使用for循環(huán)遍歷查詢結(jié)果,每次循環(huán)中的row代表一條記錄。
5. 插入數(shù)據(jù)
除了查詢,我們還可以使用游標(biāo)執(zhí)行SQL插入語(yǔ)句向數(shù)據(jù)庫(kù)中添加新的數(shù)據(jù)。以下是向MySQL數(shù)據(jù)庫(kù)中添加一條新記錄的代碼示例:
# 執(zhí)行插入語(yǔ)句
sql = “INSERT INTO users (id, name, age) VALUES (%s, %s, %s)”
val = (1, ‘John’, 25)
cur.execute(sql, val)
# 提交事務(wù)
conn.commit()
在上述代碼中,我們使用SQL語(yǔ)句向數(shù)據(jù)庫(kù)中添加一條新記錄,其中% s表示占位符,代表需要在執(zhí)行時(shí)替換。我們使用元組val代表具體要插入的值,然后使用execute()方法執(zhí)行SQL語(yǔ)句,并使用commit()方法提交事務(wù)。
6. 關(guān)閉連接
當(dāng)我們完成數(shù)據(jù)庫(kù)操作時(shí),需要關(guān)閉數(shù)據(jù)庫(kù)連接以釋放資源。以下是關(guān)閉MySQL數(shù)據(jù)庫(kù)連接的示例代碼:
# 關(guān)閉游標(biāo)和連接
cur.close()
conn.close()
在上述代碼中,我們使用游標(biāo)的close()方法和連接的close()方法關(guān)閉數(shù)據(jù)庫(kù)連接。
結(jié)論
Python是一個(gè)非常強(qiáng)大的語(yǔ)言,可以用于連接各種類(lèi)型的數(shù)據(jù)庫(kù),并執(zhí)行各種類(lèi)型的數(shù)據(jù)庫(kù)操作。本文介紹了如何使用Python連接子頁(yè)面的數(shù)據(jù)庫(kù),并查詢、插入數(shù)據(jù)等。進(jìn)一步的,你可以根據(jù)不同的需求和具體的場(chǎng)景,編寫(xiě)更復(fù)雜的代碼實(shí)現(xiàn)更復(fù)雜的操作。
相關(guān)問(wèn)題拓展閱讀:
- 怎么使用python來(lái)爬取網(wǎng)頁(yè)上的表格信息
- 如何python獲取sql數(shù)據(jù)庫(kù)訪問(wèn)的url
怎么使用python來(lái)爬取網(wǎng)頁(yè)上的表格信息
稍微說(shuō)一下背景,當(dāng)時(shí)我想研究蛋白質(zhì)與小分子的復(fù)合物在陸洞空間三維結(jié)構(gòu)上的一些規(guī)律,首先得有數(shù)據(jù)啊,數(shù)據(jù)從哪里來(lái)?就是從一個(gè)涵蓋所有已經(jīng)解析三維結(jié)構(gòu)的蛋白質(zhì)-小分子復(fù)合物的數(shù)據(jù)庫(kù)里面下載。這時(shí)候,手動(dòng)一個(gè)個(gè)去下顯然是不可取的,我們需要寫(xiě)個(gè)腳本,能從特定的網(wǎng)站選擇性得批量下載需要的信息。python是不錯(cuò)的選擇。
import urllib #python中用于獲取網(wǎng)站的模塊
import urllib2, cookielib
有些網(wǎng)站訪問(wèn)時(shí)需要cookie的,python處理cookie代碼如下:
cj = cookielib.CookieJar ( )
opener = urllib2.build_opener( urllib2.HttpCookieProcessor(cj) )
urllib2.install_opener (opener)
通常我們需要在網(wǎng)站中搜索得到我們需要的信息,這里分為二種情況:
1. 之一種,直接改變網(wǎng)址就可以得到你想要搜索的頁(yè)面:
def GetWebPage( x ): #我們定義一個(gè)獲取頁(yè)面的函數(shù),x 是用于呈遞你在頁(yè)面中搜索的內(nèi)容的參數(shù)
url = ‘
‘ + ‘你想要搜索的參數(shù)’ # 結(jié)合自己頁(yè)面情況適當(dāng)修改
page = urllib2.urlopen(url)
pageContent = page.read( )
return pageContent #返回的是HTML格式的頁(yè)面信息
2.第二種,你需要用到post方法,將你搜索的內(nèi)容放在postdata里面,然后返回你需要的頁(yè)面
def GetWebPage( x ): #我們定義一個(gè)獲取頁(yè)面的函數(shù),x 是用于呈遞你在頁(yè)面中搜索的內(nèi)容的參數(shù)
url = ‘
‘ #這個(gè)網(wǎng)址是你進(jìn)入搜索界面的網(wǎng)址
postData = urllib.urlencode( { 各種‘post’參數(shù)輸入 } ) #這里面的post參數(shù)輸入需要自己去查
req= urllib2.Request (url, postData)
pageContent = urllib2.urlopen (req). read( )
return pageContent #返回的是HTML格式的頁(yè)面信息
在獲取了我們需要的網(wǎng)頁(yè)信息之后,我們需要從獲得的網(wǎng)頁(yè)中進(jìn)一步獲取我們需要的信息,這里我推薦使用 BeautifulSoup 這個(gè)模塊, python自帶的沒(méi)有,可以自行百度谷歌下載安裝。 BeautifulSoup 翻譯就是‘美味的湯’,你需要做的是從一鍋湯里面找到你喜歡吃的東西。
import re # 正則表達(dá)式,用于匹配字符
from bs4 import BeautifulSoup # 導(dǎo)入BeautifulSoup 模塊
soup = BeautifulSoup(pageContent) #pageContent就是上面我們搜索得到的頁(yè)面
soup就是 HTML 中所有的標(biāo)簽(tag)BeautifulSoup處理格式化后的字符串,一個(gè)標(biāo)準(zhǔn)的tag形式為:
hwkobe24
通過(guò)一些過(guò)濾方法,我們可以從soup中獲取我們需要的信息:
(1) find_all ( name , attrs , recursive , text , **kwargs)
這里面,我們通過(guò)添加對(duì)標(biāo)簽的約束來(lái)獲取需要的標(biāo)簽列表, 比如 soup.find_all (‘p’) 就是尋找名字為‘p’的 標(biāo)簽,而soup.find_all (class = “tittle”) 就是找到所有class屬性為”tittle” 的標(biāo)簽,以及soup.find_all ( class = re.compile(‘lass’)) 表示 class屬性中包含‘lass’的所有標(biāo)簽,這里用到了正則表達(dá)式(可以自己學(xué)習(xí)一下,非常有用滴)
當(dāng)我們獲取了所有想要標(biāo)簽的列表之后,凳悉舉遍歷這個(gè)列表,再獲取標(biāo)簽中你需要的內(nèi)容,通常我們需要標(biāo)簽中的文字部分,也就是網(wǎng)頁(yè)中顯示出來(lái)的文字,代碼如下:
tagList = soup.find_all (class=”tittle”) #如果標(biāo)簽比較復(fù)雜,可以用多個(gè)過(guò)濾條件使過(guò)濾更加棗碧嚴(yán)格
for tag in tagList:
print tag.text
f.write ( str(tag.text) ) #將這些信息寫(xiě)入本地文件中以后使用
(2)find( name , attrs , recursive , text , **kwargs )
它與 find_all( ) 方法唯一的區(qū)別是 find_all() 方法的返回結(jié)果是值包含一個(gè)元素的列表,而 find() 方法直接返回結(jié)果
(3)find_parents( ) find_parent( )
find_all() 和 find() 只搜索當(dāng)前節(jié)點(diǎn)的所有子節(jié)點(diǎn),孫子節(jié)點(diǎn)等. find_parents() 和 find_parent() 用來(lái)搜索當(dāng)前節(jié)點(diǎn)的父輩節(jié)點(diǎn),搜索方法與普通tag的搜索方法相同,搜索文檔搜索文檔包含的內(nèi)容
(4)find_next_siblings() find_next_sibling()
這2個(gè)方法通過(guò) .next_siblings 屬性對(duì)當(dāng) tag 的所有后面解析的兄弟 tag 節(jié)點(diǎn)進(jìn)代, find_next_siblings() 方法返回所有符合條件的后面的兄弟節(jié)點(diǎn),find_next_sibling() 只返回符合條件的后面的之一個(gè)tag節(jié)點(diǎn)
(5)find_previous_siblings() find_previous_sibling()
這2個(gè)方法通過(guò) .previous_siblings 屬性對(duì)當(dāng)前 tag 的前面解析的兄弟 tag 節(jié)點(diǎn)進(jìn)行迭代, find_previous_siblings()方法返回所有符合條件的前面的兄弟節(jié)點(diǎn), find_previous_sibling() 方法返回之一個(gè)符合條件的前面的兄弟節(jié)點(diǎn)
(6)find_all_next() find_next()
這2個(gè)方法通過(guò) .next_elements 屬性對(duì)當(dāng)前 tag 的之后的 tag 和字符串進(jìn)行迭代, find_all_next() 方法返回所有符合條件的節(jié)點(diǎn), find_next() 方法返回之一個(gè)符合條件的節(jié)點(diǎn)
(7)find_all_previous() 和 find_previous()
這2個(gè)方法通過(guò) .previous_elements 屬性對(duì)當(dāng)前節(jié)點(diǎn)前面的 tag 和字符串進(jìn)行迭代, find_all_previous() 方法返回所有符合條件的節(jié)點(diǎn), find_previous()方法返回之一個(gè)符合條件的節(jié)點(diǎn)
具體的使用方法還有很多,用到這里你應(yīng)該可以解決大部分問(wèn)題了,如果要更深入了解可以參考官方的使用說(shuō)明哈!
如何python獲取sql數(shù)據(jù)庫(kù)訪問(wèn)的url
python
操作數(shù)據(jù)庫(kù),要安裝一個(gè)Python和數(shù)據(jù)庫(kù)交互的包MySQL-python-1.2.2.win32-py2.5.exe,然后我們就可以使用MySQLdb這個(gè)包進(jìn)行數(shù)據(jù)庫(kù)操作了。
操作步驟如下:
1、建立數(shù)據(jù)庫(kù)連接
import
MySQLdb
conn=MySQLdb.connect(host=”localhost”,user=”root”,passwd=”sa”,db=”mytable”)
cursor=conn.cursor()
2、執(zhí)行數(shù)據(jù)庫(kù)操作
n=cursor.execute(sql,param)
我們要使用連接對(duì)象獲得一個(gè)cursor對(duì)象,接下來(lái),我們會(huì)使用cursor提供的方法來(lái)進(jìn)行工作.
這些方法包括兩大類(lèi):1.執(zhí)行命令,2.接收返回值
3、cursor用來(lái)執(zhí)行命令的方法:
callproc(self, procname,
args):用來(lái)執(zhí)行存儲(chǔ)過(guò)程,接收的參數(shù)為存儲(chǔ)過(guò)程名和參數(shù)列表,返回值為受影響的行數(shù)
execute(self, query,
args):執(zhí)行單條sql語(yǔ)句,接收的參數(shù)為sql語(yǔ)句本身和使用的參數(shù)列表,返回值為受影響的行數(shù)
executemany(self, query,
args):執(zhí)行單挑sql語(yǔ)句,但是重復(fù)執(zhí)行參數(shù)列表里的參數(shù),返回值為受影響的行數(shù)
nextset(self):移動(dòng)到下一個(gè)結(jié)果集
4、cursor用來(lái)接收返回值的方法:
fetchall(self):接收全部的返回結(jié)果行.
fetchmany(self,
size=None):接收size條返回結(jié)果行.如果size的值大于返回的結(jié)果行的數(shù)量,則會(huì)返回cursor.arraysize條數(shù)據(jù).
fetchone(self):返回一條結(jié)果行.
scroll(self, value,
mode=’relative’):移動(dòng)指針到某一行.如果mode=’relative’,則表示從當(dāng)前所在行移動(dòng)value條,如果mode=’absolute’,則表示從結(jié)果集的之一
行移動(dòng)value條.
5、下面的代碼是一個(gè)完整的例子.
#使用sql語(yǔ)句,這里要接收的參數(shù)都用%s占位符.要注意的是,無(wú)論你要插入的數(shù)據(jù)是什么類(lèi)型,占位符永遠(yuǎn)都要用%s
sql=”insert
into cdinfo values(%s,%s,%s,%s,%s)”
#param應(yīng)該為tuple或者list
param=(title,singer,imgurl,url,alpha)
#執(zhí)行,如果成功,n的值為1
n=cursor.execute(sql,param)
#再來(lái)執(zhí)行一個(gè)查詢的操作
cursor.execute(“select
* from cdinfo”)
#我們使用了fetchall這個(gè)方法.這樣,cds里保存的將會(huì)是查詢返回畝陪的全部結(jié)果.每條結(jié)果都是一個(gè)tuple類(lèi)型的數(shù)據(jù),這些tuple組成了一個(gè)tuple
cds=cursor.fetchall()
#因?yàn)槭莟uple,所以可以這樣使用結(jié)果集
cds
#或者直接顯示出來(lái),看看結(jié)果集的真實(shí)樣子
cds
#如果需要批量的插入數(shù)據(jù),就這樣做
sql=”insert
into cdinfo values(0,%s,%s,%s,%s,%s)”
#每個(gè)值的為一個(gè)tuple,整個(gè)參數(shù)集組成一個(gè)tuple,或者list
param=((title,singer,imgurl,url,alpha),(title2,singer2,imgurl2,url2,alpha2))
#使用executemany方法來(lái)批量的插入數(shù)據(jù).這真是一個(gè)很酷的方法!
n=cursor.executemany(sql,param)
需要注意的是(或者說(shuō)是我感到奇怪的是),在執(zhí)行完插入或刪除或修改操作后,需要調(diào)用一下conn.commit()方法迅汪蠢進(jìn)行提交.這樣,數(shù)據(jù)才會(huì)真陵消正保
存在數(shù)據(jù)庫(kù)中.我不清楚是否是我的mysql設(shè)置問(wèn)題,總之,今天我在一開(kāi)始使用的時(shí)候,如果不用commit,那數(shù)據(jù)就不會(huì)保留在數(shù)據(jù)庫(kù)中,但是,數(shù)據(jù)
確實(shí)在數(shù)據(jù)庫(kù)呆過(guò).因?yàn)樽詣?dòng)編號(hào)進(jìn)行了累積,而且返回的受影響的行數(shù)并不為0.
6、關(guān)閉數(shù)據(jù)庫(kù)連接
需要分別的關(guān)閉指針對(duì)象和連接對(duì)象.他們有名字相同的方法
cursor.close()
conn.close()
Django操作數(shù)據(jù)庫(kù)
關(guān)于python 獲得子頁(yè)面的數(shù)據(jù)庫(kù)的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
成都創(chuàng)新互聯(lián)科技有限公司,是一家專(zhuān)注于互聯(lián)網(wǎng)、IDC服務(wù)、應(yīng)用軟件開(kāi)發(fā)、網(wǎng)站建設(shè)推廣的公司,為客戶提供互聯(lián)網(wǎng)基礎(chǔ)服務(wù)!
創(chuàng)新互聯(lián)(www.cdcxhl.com)提供簡(jiǎn)單好用,價(jià)格厚道的香港/美國(guó)云服務(wù)器和獨(dú)立服務(wù)器。創(chuàng)新互聯(lián)成都老牌IDC服務(wù)商,專(zhuān)注四川成都IDC機(jī)房服務(wù)器托管/機(jī)柜租用。為您精選優(yōu)質(zhì)idc數(shù)據(jù)中心機(jī)房租用、服務(wù)器托管、機(jī)柜租賃、大帶寬租用,可選線路電信、移動(dòng)、聯(lián)通等。
當(dāng)前標(biāo)題:如何在Python中獲取子頁(yè)面的數(shù)據(jù)庫(kù)?(python獲得子頁(yè)面的數(shù)據(jù)庫(kù))
分享路徑:http://m.fisionsoft.com.cn/article/djjspeo.html


咨詢
建站咨詢
