溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

python-xpath如何獲取html文檔的部分內(nèi)容

發(fā)布時間:2021-05-11 10:54:00 來源:億速云 閱讀:230 作者:小新 欄目:開發(fā)技術(shù)

小編給大家分享一下python-xpath如何獲取html文檔的部分內(nèi)容,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

python有哪些常用庫

python常用的庫:1.requesuts;2.scrapy;3.pillow;4.twisted;5.numpy;6.matplotlib;7.pygama;8.ipyhton等。

有些時候我在們需要的用正則提取出html中某一個部分的文字內(nèi)容,如圖:

python-xpath如何獲取html文檔的部分內(nèi)容

獲取dd部分的html文檔,我們要通過它的一個屬性去確定他的位置才可以拿到他這個部分我們可以看到他的這個屬性class='row clearfix ',然后用xpath去獲取到這部分:

name = tree.xpath("//dd[@class='row clearfix ']")
from lxml import html
import requests
url = 'http://navi.cnki.net/knavi/JournalDetail/GetArticleList?year=2018&issue=04&pykm=DZXU&pageIdx=0&pcode=CJFD'
res = requests.get(url)
tree = html.fromstring(res.text)
name = tree.xpath("//dd[@class='row clearfix ']")
print(name)

如果直接打印他是不能夠出來的,

python-xpath如何獲取html文檔的部分內(nèi)容

我們需要對Element進(jìn)行處理,用到name1 = html.tostring(name[0]),代碼如下:

from lxml import html
import requests
url = 'http://navi.cnki.net/knavi/JournalDetail/GetArticleList?year=2018&issue=04&pykm=DZXU&pageIdx=0&pcode=CJFD'
res = requests.get(url)
tree = html.fromstring(res.text)
name = tree.xpath("//dd[@class='row clearfix ']")
name1 = html.tostring(name[0])
print(name1)

打印截圖:

python-xpath如何獲取html文檔的部分內(nèi)容

但是大家可以看到里面的等內(nèi)容并不是中文,原因是我們使用tostring方法輸出的是修正后的HTML代碼,但是結(jié)果是bytes類型,在python中bytes類型是不可以進(jìn)行編碼的,需要轉(zhuǎn)換成字符串,使用代碼name1.decode(),此時我們將bytes類型轉(zhuǎn)換為str(字符串)類型。

那么此時我們關(guān)鍵是如何將$#26080;此類的符號轉(zhuǎn)換成漢字?。?!那么首先要搞清楚這是什么編碼?這類符號是HTML、XML 等 SGML 類語言的轉(zhuǎn)義序列。它們不是”編碼“,也就是說我們不能使用utf-8、gbk等編碼進(jìn)行處理,需要使用HTMLParse進(jìn)行處理,完整代碼如下:

from lxml import html
import requests
from html.parser import HTMLParser #導(dǎo)入html解析庫
url = 'http://navi.cnki.net/knavi/JournalDetail/GetArticleList?year=2018&issue=04&pykm=DZXU&pageIdx=0&pcode=CJFD'
res = requests.get(url)
tree = html.fromstring(res.text)
name = tree.xpath("//dd[@class='row clearfix ']")
name1 = html.tostring(name[0])
name2 = HTMLParser().unescape(name1.decode())
print(name2)

此時運(yùn)行結(jié)果如下:

python-xpath如何獲取html文檔的部分內(nèi)容

以上是“python-xpath如何獲取html文檔的部分內(nèi)容”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI