python xpath提取转码_python-xpath获取html文档的部分内容
有些時候我在們需要的用正則提取出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)
如果直接打印他是不能夠出來的,
我們需要對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)
打印截圖:
但是大家可以看到里面的等內(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)
此時運行結(jié)果如下:
那么此時就已經(jīng)大功告成了!!!
以上這篇python-xpath獲取html文檔的部分內(nèi)容就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持我們。
本文標(biāo)題: python-xpath獲取html文檔的部分內(nèi)容
本文地址: http://www.cppcns.com/jiaoben/python/302295.html
總結(jié)
以上是生活随笔為你收集整理的python xpath提取转码_python-xpath获取html文档的部分内容的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 路由器级联后网速慢的原因分析和问题解决
- 下一篇: matlab的拟合函数polyfit()