在上一節(jié)我們介紹了 BeautifulSoup 的使用,它是一個(gè)非常強(qiáng)大的網(wǎng)頁解析庫,可有沒有覺得它的一些方法使用有點(diǎn)不適應(yīng)?有沒有覺得它的 CSS 選擇器功能沒有那么強(qiáng)大?
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡(jiǎn)單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名與空間、網(wǎng)站空間、營銷軟件、網(wǎng)站建設(shè)、龍游網(wǎng)站維護(hù)、網(wǎng)站推廣。如果你對(duì) Web 有所涉及,如果你比較喜歡用 CSS 選擇器,如果你對(duì) jQuery 有所了解,那么這里有一個(gè)更適合你的解析庫—— PyQuery。
接下來我們就來感受一下 PyQuery 的強(qiáng)大之處。
在開始之前請(qǐng)確保已經(jīng)正確安裝好了 PyQuery,如沒有安裝可以參考第一章的安裝過程。
像 BeautifulSoup 一樣,PyQuery 初始化的時(shí)候也需要傳入 HTML 數(shù)據(jù)源來初始化一個(gè)操作對(duì)象,它的初始化方式有多種,比如直接傳入字符串,傳入 URL,傳文件名。下面我們來詳細(xì)介紹一下。
首先我們用一個(gè)實(shí)例來感受一下:
html = '''
- first item
- second item
- third item
- fourth item
- fifth item
'''
from pyquery import PyQuery as pq
doc = pq(html)
print(doc('li'))
Python資源分享qun 784758214 ,內(nèi)有安裝包,PDF,學(xué)習(xí)視頻,這里是Python學(xué)習(xí)者的聚集地,零基礎(chǔ),進(jìn)階,都?xì)g迎
運(yùn)行結(jié)果:
first item
second item
third item
fourth item
fifth item
在這里我們首先引入了 PyQuery 這個(gè)對(duì)象,取別名為 pq,然后聲明了一個(gè)長 HTML 字符串,當(dāng)作參數(shù)傳遞給 PyQuery,這樣就成功完成了初始化,然后接下來將初始化的對(duì)象傳入 CSS 選擇器,在這個(gè)實(shí)例中我們傳入 li 節(jié)點(diǎn),這樣就可以選擇所有的 li 節(jié)點(diǎn),打印輸出可以看到所有的 li 節(jié)點(diǎn)的 HTML 文本。
初始化的參數(shù)不僅可以以字符串的形式傳遞,還可以傳入網(wǎng)頁的 URL,在這里只需要指定參數(shù)為 url 即可:
from pyquery import PyQuery as pq
doc = pq(url='http://www.segmentfault.com')
print(doc('title'))
運(yùn)行結(jié)果:
SegmentFault 思否
這樣的話 PyQuery 會(huì)首先請(qǐng)求這個(gè) URL,然后用得到的 HTML 內(nèi)容完成初始化,其實(shí)就相當(dāng)于我們用網(wǎng)頁的源代碼以字符串的形式傳遞給 PyQuery 來初始化。
它與下面的功能是相同的:
from pyquery import PyQuery as pq
import requests
doc = pq(requests.get('http://www.segmentfault.com').text)
print(doc('title'))
當(dāng)然除了傳遞一個(gè) URL,還可以傳遞本地的文件名,參數(shù)指定為 filename 即可:
from pyquery import PyQuery as pq
doc = pq(filename='demo.html')
print(doc('li'))
當(dāng)然在這里需要有一個(gè)本地 HTML 文件 demo.html,內(nèi)容是待解析的 HTML 字符串。這樣它會(huì)首先讀取本地的文件內(nèi)容,然后用文件內(nèi)容以字符串的形式傳遞給 PyQuery 來初始化。
以上三種初始化方式均可,當(dāng)然最常用的初始化方式還是以字符串形式傳遞。
我們首先用一個(gè)實(shí)例來感受一下 PyQuery 的 CSS 選擇器的用法:
html = '''
- first item
- second item
- third item
- fourth item
- fifth item
'''
from pyquery import PyQuery as pq
doc = pq(html)
print(doc('#container .list li'))
print(type(doc('#container .list li')))
運(yùn)行結(jié)果:
first item
second item
third item
fourth item
fifth item
在這里我們初始化 PyQuery 對(duì)象之后,傳入了一個(gè) CSS 選擇器,#container .list li,意思是選取 id 為 container 的節(jié)點(diǎn)內(nèi)部的 class 為 list 的節(jié)點(diǎn)內(nèi)部的所有 li 節(jié)點(diǎn)。然后打印輸出,可以看到成功獲取到了符合條件的節(jié)點(diǎn)。
然后我們將它的類型打印輸出,可以看到它的類型依然是 PyQuery類型。
下面我們介紹一些常用的查詢函數(shù),這些函數(shù)和 jQuery 中的函數(shù)用法也完全相同。
查找子節(jié)點(diǎn)需要用到 find() 方法,傳入的參數(shù)是 CSS 選擇器,我們還是以上面的 HTML 為例:
from pyquery import PyQuery as pq
doc = pq(html)
items = doc('.list')
print(type(items))
print(items)
lis = items.find('li')
print(type(lis))
print(lis)
運(yùn)行結(jié)果:
- first item
- second item
- third item
- fourth item
- fifth item
first item
second item
third item
fourth item
fifth item
首先我們選取了 class 為 list 的節(jié)點(diǎn),然后我們調(diào)用了 find() 方法,傳入了 CSS 選擇器,選取其內(nèi)部的 li 節(jié)點(diǎn),最后都打印輸出即可觀察到對(duì)應(yīng)的查詢結(jié)果,可以發(fā)現(xiàn) find() 方法會(huì)將符合條件的所有節(jié)點(diǎn)選擇出來,結(jié)果的類型是 PyQuery 類型。
其實(shí) find() 的查找范圍是節(jié)點(diǎn)的所有子孫節(jié)點(diǎn),而如果我們只想查找子節(jié)點(diǎn),那可以用 children() 方法:
lis = items.children()
print(type(lis))
print(lis)
運(yùn)行結(jié)果:
first item
second item
third item
fourth item
fifth item
如果要篩選所有子節(jié)點(diǎn)中符合條件的節(jié)點(diǎn),比如我們想篩選出子節(jié)點(diǎn)中 class 為 active 的節(jié)點(diǎn),可以向 children() 方法傳入 CSS 選擇器 .active:
lis = items.children('.active')
print(lis)
運(yùn)行結(jié)果:
third item
fourth item
可以看到輸出的結(jié)果已經(jīng)做了篩選,留下了 class 為 active 的節(jié)點(diǎn)。
我們可以用 parent() 方法來獲取某個(gè)節(jié)點(diǎn)的父節(jié)點(diǎn),我們用一個(gè)實(shí)例來感受一下:
html = '''
- first item
- second item
- third item
- fourth item
- fifth item
'''
from pyquery import PyQuery as pq
doc = pq(html)
items = doc('.list')
container = items.parent()
print(type(container))
print(container)
運(yùn)行結(jié)果:
- first item
- second item
- third item
- fourth item
- fifth item
在這里我們首先用 .list 選取了 class 為 list 的節(jié)點(diǎn),然后調(diào)用了 parent() 方法,得到其父節(jié)點(diǎn),類型依然是 PyQuery 類型。
這里的父節(jié)點(diǎn)是該節(jié)點(diǎn)的直接父節(jié)點(diǎn),也就是說,它不會(huì)再去查找父節(jié)點(diǎn)的父節(jié)點(diǎn),即祖先節(jié)點(diǎn)。
但是如果我們想獲取某個(gè)祖先節(jié)點(diǎn)怎么辦呢?可以用 parents() 方法:
from pyquery import PyQuery as pq
doc = pq(html)
items = doc('.list')
parents = items.parents()
print(type(parents))
print(parents)
運(yùn)行結(jié)果:
- first item
- second item
- third item
- fourth item
- fifth item
- first item
- second item
- third item
- fourth item
- fifth item
在這里我們調(diào)用了 parents() 方法,可以看到輸出結(jié)果有兩個(gè),一個(gè)是 class 為 wrap 的節(jié)點(diǎn),一個(gè)是 id 為 container 的節(jié)點(diǎn),也就是說,parents() 方法會(huì)返回所有的祖先節(jié)點(diǎn)。
如果我們想要篩選某個(gè)祖先節(jié)點(diǎn)的話可以向 parents() 方法傳入 CSS 選擇器,這樣就會(huì)返回祖先節(jié)點(diǎn)中符合 CSS 選擇器的節(jié)點(diǎn):
parent = items.parents('.wrap')
print(parent)
運(yùn)行結(jié)果:
- first item
- second item
- third item
- fourth item
- fifth item
Python資源分享qun 784758214 ,內(nèi)有安裝包,PDF,學(xué)習(xí)視頻,這里是Python學(xué)習(xí)者的聚集地,零基礎(chǔ),進(jìn)階,都?xì)g迎
可以看到輸出結(jié)果就少了一個(gè)節(jié)點(diǎn),只保留了 class 為 wrap 的節(jié)點(diǎn)。
在上面我們說明了子節(jié)點(diǎn)和父節(jié)點(diǎn)的用法,還有一種節(jié)點(diǎn)那就是兄弟節(jié)點(diǎn),如果要獲取兄弟節(jié)點(diǎn)可以使用 siblings() 方法。我們還是以上面的 HTML 代碼為例來感受一下:
from pyquery import PyQuery as pq
doc = pq(html)
li = doc('.list .item-0.active')
print(li.siblings())
在這里我們首先選擇了 class 為 list 的節(jié)點(diǎn)內(nèi)部的 class 為 item-0 和 active 的節(jié)點(diǎn),也就是第三個(gè) li 節(jié)點(diǎn)。那么很明顯它的兄弟節(jié)點(diǎn)有四個(gè),那就是第一、二、四、五個(gè) li 節(jié)點(diǎn)。
運(yùn)行結(jié)果:
second item
first item
fourth item
fifth item
可以看到運(yùn)行結(jié)果也正是我們剛才所說的四個(gè)兄弟節(jié)點(diǎn)。
如果要篩選某個(gè)兄弟節(jié)點(diǎn),我們依然可以向方法傳入 CSS 選擇器,這樣就會(huì)從所有兄弟節(jié)點(diǎn)中挑選出符合條件的節(jié)點(diǎn)了:
from pyquery import PyQuery as pq
doc = pq(html)
li = doc('.list .item-0.active')
print(li.siblings('.active'))
在這里我們篩選了 class 為 active 的節(jié)點(diǎn),通過剛才的結(jié)果我們可以觀察到 class 為 active 的兄弟節(jié)點(diǎn)只有第四個(gè) li 節(jié)點(diǎn),所以結(jié)果應(yīng)該是一個(gè)。
運(yùn)行結(jié)果:
fourth item
我們剛才可以觀察到,PyQuery 的選擇結(jié)果可能是多個(gè)節(jié)點(diǎn),可能是單個(gè)節(jié)點(diǎn),類型都是 PyQuery 類型,并沒有返回像 BeautifulSoup 一樣的列表。
對(duì)于單個(gè)節(jié)點(diǎn)來說,我們可以直接打印輸出,也可直接轉(zhuǎn)成字符串:
from pyquery import PyQuery as pq
doc = pq(html)
li = doc('.item-0.active')
print(li)
print(str(li))
運(yùn)行結(jié)果:
third item
third item
對(duì)于多個(gè)節(jié)點(diǎn)的結(jié)果,我們就需要遍歷來獲取了,例如這里我們把每一個(gè) li 節(jié)點(diǎn)進(jìn)行遍歷,,需要調(diào)用 items() 方法:
from pyquery import PyQuery as pq
doc = pq(html)
lis = doc('li').items()
print(type(lis))
for li in lis:
print(li, type(li))
運(yùn)行結(jié)果:
first item
second item
third item
fourth item
fifth item
在這里我們可以發(fā)現(xiàn)調(diào)用 items() 方法后,會(huì)得到一個(gè)生成器,遍歷一下,就可以逐個(gè)得到 li 節(jié)點(diǎn)對(duì)象了,它的類型也是 PyQuery 類型,所以每個(gè) li 節(jié)點(diǎn)還可以調(diào)用前面所說的方法進(jìn)行選擇,比如繼續(xù)查詢子節(jié)點(diǎn),尋找某個(gè)祖先節(jié)點(diǎn)等等,非常靈活。
提取到節(jié)點(diǎn)之后,我們的最終目的當(dāng)然是提取節(jié)點(diǎn)所包含的信息了,比較重要的信息有兩類,一是獲取屬性,二是獲取文本,下面我們分別進(jìn)行說明。
提取到某個(gè) PyQuery 類型的節(jié)點(diǎn)之后,我們可以調(diào)用 attr() 方法來獲取屬性:
html = '''
- first item
- second item
- third item
- fourth item
- fifth item
'''
from pyquery import PyQuery as pq
doc = pq(html)
a = doc('.item-0.active a')
print(a, type(a))
print(a.attr('href'))
運(yùn)行結(jié)果:
third item
link3.html
在這里我們首先選中了 class 為 item-0 和 active 的 li 節(jié)點(diǎn)內(nèi)的 a 節(jié)點(diǎn),它的類型可以看到是 PyQuery 類型。
然后我們調(diào)用了 attr() 方法,然后傳入屬性的名稱,就可以得到這個(gè)屬性值了。
也可以通過調(diào)用 attr 屬性來獲取屬性,用法如下:
print(a.attr.href)
結(jié)果:
link3.html
結(jié)果是完全一樣的,在這里我們沒有調(diào)用方法,而是調(diào)用了 attr 屬性,然后再調(diào)用屬性名,同樣可以得到屬性值。
如果我們選中的是多個(gè)元素,然后調(diào)用 attr() 方法會(huì)出現(xiàn)怎樣的結(jié)果?我們用一個(gè)實(shí)例來測(cè)試一下:
a = doc('a')
print(a, type(a))
print(a.attr('href'))
print(a.attr.href)
運(yùn)行結(jié)果:
second itemthird itemfourth itemfifth item
link2.html
link2.html
照理來說我們選中的 a 節(jié)點(diǎn)應(yīng)該有四個(gè),而且打印結(jié)果也是四個(gè),但是當(dāng)我們調(diào)用 attr() 方法時(shí),返回的結(jié)果卻只是第一個(gè)。
所以當(dāng)返回結(jié)果包含多個(gè)節(jié)點(diǎn)時(shí),調(diào)用 attr() 方法只會(huì)得到第一個(gè)節(jié)點(diǎn)的屬性。
那么遇到這種情況如果我們想獲取所有的 a 節(jié)點(diǎn)的屬性,就需要用到上文所說的遍歷了:
from pyquery import PyQuery as pq
doc = pq(html)
a = doc('a')
for item in a.items():
print(item.attr('href'))
運(yùn)行結(jié)果:
link2.html
link3.html
link4.html
link5.html
所以,在進(jìn)行屬性獲取的時(shí)候觀察一下返回節(jié)點(diǎn)是一個(gè)還是多個(gè),如果是多個(gè),則需要遍歷才能依次獲取每個(gè)節(jié)點(diǎn)的屬性。
獲取節(jié)點(diǎn)之后的另一個(gè)主要的操作就是獲取其內(nèi)部的文本了,我們可以調(diào)用 text() 方法來獲?。?/p>
html = '''
- first item
- second item
- third item
- fourth item
- fifth item
'''
from pyquery import PyQuery as pq
doc = pq(html)
a = doc('.item-0.active a')
print(a)
print(a.text())
運(yùn)行結(jié)果:
third item
third item
我們首先選中了一個(gè) a 節(jié)點(diǎn),然后調(diào)用了 text() 方法,就可以獲取其內(nèi)部的文本信息了,它會(huì)忽略掉節(jié)點(diǎn)內(nèi)部包含的所有 HTML,只返回純文字內(nèi)容。
但如果我們想要獲取這個(gè)節(jié)點(diǎn)內(nèi)部的 HTML 文本,就可以用 html() 方法:
from pyquery import PyQuery as pq
doc = pq(html)
li = doc('.item-0.active')
print(li)
print(li.html())
這里我們選中了第三個(gè) li 節(jié)點(diǎn),然后調(diào)用了 html() 方法,它返回的結(jié)果應(yīng)該是li節(jié)點(diǎn)內(nèi)的所有 HTML 文本。
運(yùn)行結(jié)果:
third item
這里同樣有一個(gè)問題,如果我們選中的結(jié)果是多個(gè)節(jié)點(diǎn),text() 或 html() 會(huì)返回什么內(nèi)容?
我們用一個(gè)實(shí)例來看一下:
html = '''
'''
from pyquery import PyQuery as pq
doc = pq(html)
li = doc('li')
print(li.html())
print(li.text())
print(type(li.text())
運(yùn)行結(jié)果:
second item
second item third item fourth item fifth item
結(jié)果可能比較出乎意料,我們選中的是所有的 li 節(jié)點(diǎn),可以發(fā)現(xiàn) html() 方法返回的是第一個(gè) li 節(jié)點(diǎn)的內(nèi)部 HTML 文本,而 text() 則返回了所有的 li 節(jié)點(diǎn)內(nèi)部純文本,中間用一個(gè)空格分割開,實(shí)際上是一個(gè)字符串。
所以這個(gè)地方值得注意,如果我們得到的結(jié)果是多個(gè)節(jié)點(diǎn),如果要獲取每個(gè)節(jié)點(diǎn)的內(nèi)部 HTML 文本,則需要遍歷每個(gè)節(jié)點(diǎn),而 text() 方法不需要遍歷就可以獲取,它是將所有節(jié)點(diǎn)取文本之后合并成一個(gè)字符串。
PyQuery 提供了一系列方法來對(duì)節(jié)點(diǎn)進(jìn)行動(dòng)態(tài)修改操作,比如為某個(gè)節(jié)點(diǎn)添加一個(gè) class,移除某個(gè)節(jié)點(diǎn)等等,這些操作有時(shí)候會(huì)為提取信息帶來極大的便利。
由于節(jié)點(diǎn)操作的方法太多,下面舉幾個(gè)典型的例子來說明它的用法。
我們先用一個(gè)實(shí)例來感受一下:
html = '''
- first item
- second item
- third item
- fourth item
- fifth item
'''
from pyquery import PyQuery as pq
doc = pq(html)
li = doc('.item-0.active')
print(li)
li.removeClass('active')
print(li)
li.addClass('active')
print(li)
首先我們選中了第三個(gè) li 節(jié)點(diǎn),然后調(diào)用了 removeClass() 方法,將 li 節(jié)點(diǎn)的 active 這個(gè) class 移除,后來又調(diào)用了 addClass() 方法,又將 class 添加回來,每執(zhí)行一次操作,就打印輸出一下當(dāng)前 li 節(jié)點(diǎn)的內(nèi)容。
運(yùn)行結(jié)果:
third item
third item
third item
可以看到一共進(jìn)行了三次輸出,第二次輸出 li 節(jié)點(diǎn)的 active 這個(gè) class 被移除了,第三次 class 又添加回來了。
所以說我們 addClass()、removeClass() 這些方法可以動(dòng)態(tài)地改變節(jié)點(diǎn)的 class 屬性。
當(dāng)然除了操作 class 這個(gè)屬性,也有 attr() 方法來專門針對(duì)屬性進(jìn)行操作,也可以用 text()、html() 方法來改變節(jié)點(diǎn)內(nèi)部的內(nèi)容。
我們用實(shí)例感受一下:
html = '''
'''
from pyquery import PyQuery as pq
doc = pq(html)
li = doc('.item-0.active')
print(li)
li.attr('name', 'link')
print(li)
li.text('changed item')
print(li)
li.html('changed item')
print(li)
在這里我們首先選中了 li 節(jié)點(diǎn),然后調(diào)用 attr() 方法來修改屬性,第一個(gè)參數(shù)為屬性名,第二個(gè)參數(shù)為屬性值,然后我們調(diào)用了 text() 和 html() 方法來改變節(jié)點(diǎn)內(nèi)部的內(nèi)容。三次操作后分別又打印輸出當(dāng)前 li 節(jié)點(diǎn)。
運(yùn)行結(jié)果:
third item
third item
changed item
changed item
可以發(fā)現(xiàn),調(diào)用 attr() 方法后,li 節(jié)點(diǎn)多了一個(gè)原本不存在的屬性 name,其值為 link,調(diào)用 text() 方法,傳入文本之后,發(fā)現(xiàn) li 節(jié)點(diǎn)內(nèi)部的文本就全被改變?yōu)閭魅氲淖址谋玖?。調(diào)用 html() 方法傳入 HTML 文本之后,li 節(jié)點(diǎn)內(nèi)部又改變?yōu)閭魅氲?HTML 文本。
所以說,attr() 方法如果只傳入第一個(gè)參數(shù)屬性名,則是獲取這個(gè)屬性值,如果傳入第二個(gè)參數(shù),可以用來修改屬性值,text() 和 html() 方法如果不傳參數(shù)是獲取節(jié)點(diǎn)內(nèi)純文本和 HTML 文本,如果傳入?yún)?shù)則是進(jìn)行賦值。
remove 顧名思義移除,remove() 方法有時(shí)會(huì)為信息的提取帶來非常大的便利。下面我們看一個(gè)實(shí)例:
html = '''
Hello, World
This is a paragraph.
'''
from pyquery import PyQuery as pq
doc = pq(html)
wrap = doc('.wrap')
print(wrap.text())
在這里有一段 HTML 文本,我們現(xiàn)在想提取 Hello, World 這個(gè)字符串,而不要 p 節(jié)點(diǎn)內(nèi)部的字符串,這個(gè)怎樣來提?。?/p>
在這里我們直接先嘗試提取 class 為 wrap 的節(jié)點(diǎn)的內(nèi)容,看看是不是我們想要的,運(yùn)行結(jié)果如下:
Hello, World This?is?a paragraph.
然而這個(gè)結(jié)果還包含了內(nèi)部的 p 節(jié)點(diǎn)的內(nèi)容,也就是說 text() 把所有的純文本全提取出來了。如果我們想去掉 p 節(jié)點(diǎn)內(nèi)部的文本,可以選擇再把 p 節(jié)點(diǎn)內(nèi)的文本提取一遍,然后從整個(gè)結(jié)果中移除這個(gè)子串,但這個(gè)做法明顯比較繁瑣。
那這是 remove() 方法就可以派上用場(chǎng)了,我們可以接著這么做:
wrap.find('p').remove()
print(wrap.text())
我們首先選中了 p 節(jié)點(diǎn),然后調(diào)用了 remove() 方法將其移除,然后這時(shí) wrap 內(nèi)部就只剩下 Hello, World 這句話了,然后再利用 text()方 法提取即可。
所以說,remove() 方法可以刪除某些冗余內(nèi)容,來方便我們的提取。在適當(dāng)?shù)臅r(shí)候使用可以極大地提高效率。
另外其實(shí)還有很多節(jié)點(diǎn)操作的方法,比如 append()、empty()、prepend() 等方法,他們和 jQuery 的用法是完全一致的,詳細(xì)的用法可以參考官方文檔:http://pyquery.readthedocs.io...
CSS 選擇器之所以強(qiáng)大,還有一個(gè)很重要的原因就是它支持多種多樣的偽類選擇器。例如選擇第一個(gè)節(jié)點(diǎn)、最后一個(gè)節(jié)點(diǎn)、奇偶數(shù)節(jié)點(diǎn)、包含某一文本的節(jié)點(diǎn)等等,我們用一個(gè)實(shí)例感受一下:
html = '''
- first item
- second item
- third item
- fourth item
- fifth item
'''
from pyquery import PyQuery as pq
doc = pq(html)
li = doc('li:first-child')
print(li)
li = doc('li:last-child')
print(li)
li = doc('li:nth-child(2)')
print(li)
li = doc('li:gt(2)')
print(li)
li = doc('li:nth-child(2n)')
print(li)
li = doc('li:contains(second)')
print(li)
Python資源分享qun 784758214 ,內(nèi)有安裝包,PDF,學(xué)習(xí)視頻,這里是Python學(xué)習(xí)者的聚集地,零基礎(chǔ),進(jìn)階,都?xì)g迎
在這里我們使用了 CSS3 的偽類選擇器,依次選擇了第一個(gè) li 節(jié)點(diǎn)、最后一個(gè) li 節(jié)點(diǎn)、第二個(gè) li 節(jié)點(diǎn)、第三個(gè) li 之后的 li 節(jié)點(diǎn)、偶數(shù)位置的 li 節(jié)點(diǎn)、包含 second 文本的 li 節(jié)點(diǎn),功能十分強(qiáng)大。
到此為止 PyQuery 的常用用法就介紹完了
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。