python-xpath獲取html文檔的部分內容
有些時候我在們需要的用正則提取出html中某一個部分的文字內容,如圖:
獲取dd部分的html文檔,我們要通過它的一個屬性去確定他的位置才可以拿到他這個部分我們可以看到他的這個屬性class='row clearfix ',然后用xpath去獲取到這部分:
name = tree.xpath("http://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("http://dd[@class='row clearfix ']") print(name)
如果直接打印他是不能夠出來的,
我們需要對Element進行處理,用到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("http://dd[@class='row clearfix ']") name1 = html.tostring(name[0]) print(name1)
打印截圖:
但是大家可以看到里面的等內容并不是中文,原因是我們使用tostring方法輸出的是修正后的HTML代碼,但是結果是bytes類型,在python中bytes類型是不可以進行編碼的,需要轉換成字符串,使用代碼name1.decode(),此時我們將bytes類型轉換為str(字符串)類型。
那么此時我們關鍵是如何將$#26080;此類的符號轉換成漢字?。?!那么首先要搞清楚這是什么編碼?這類符號是HTML、XML 等 SGML 類語言的轉義序列。它們不是”編碼“,也就是說我們不能使用utf-8、gbk等編碼進行處理,需要使用HTMLParse進行處理,完整代碼如下:
from lxml import html import requests from html.parser import HTMLParser #導入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("http://dd[@class='row clearfix ']") name1 = html.tostring(name[0]) name2 = HTMLParser().unescape(name1.decode()) print(name2)
此時運行結果如下:
那么此時就已經大功告成了?。?!
以上這篇python-xpath獲取html文檔的部分內容就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
- python中requests庫+xpath+lxml簡單使用
- python使用XPath解析數(shù)據(jù)爬取起點小說網數(shù)據(jù)
- python 網頁解析器掌握第三方 lxml 擴展庫與 xpath 的使用方法
- python利用xpath爬取網上數(shù)據(jù)并存儲到django模型中
- Python Selenium XPath根據(jù)文本內容查找元素的方法
- python Xpath語法的使用
- python3顯式變量類型typing的實現(xiàn)
- Python使用xpath實現(xiàn)圖片爬取
- 利用Python中的Xpath實現(xiàn)一個在線匯率轉換器
- python selenium xpath定位操作
- Python xpath表達式如何實現(xiàn)數(shù)據(jù)處理
- Python利用Xpath選擇器爬取京東網商品信息
- Python使用requests xpath 并開啟多線程爬取西刺代理ip實例
- python3 xpath和requests應用詳解
- Python3 xml.etree.ElementTree支持的XPath語法詳解
- 關于python中的xpath解析定位
- python定位xpath 節(jié)點位置的方法
- Python自動化之定位方法大殺器xpath
相關文章
Python使用socket模塊實現(xiàn)簡單tcp通信
這篇文章主要介紹了Python使用socket模塊實現(xiàn)簡單tcp通信,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-08-08python實現(xiàn)通過flask和前端進行數(shù)據(jù)收發(fā)
今天小編就為大家分享一篇python實現(xiàn)通過flask和前端進行數(shù)據(jù)收發(fā),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08Python使用functools模塊中的partial函數(shù)生成偏函數(shù)
所謂偏函數(shù)即是規(guī)定了固定參數(shù)的函數(shù),在函數(shù)式編程中我們經??梢杂玫?這里我們就來看一下Python使用functools模塊中的partial函數(shù)生成偏函數(shù)的方法2016-07-07一文掌握python中的__init__的意思及使用場景分析
__init__是構造方法,誰調用,表示誰(更直觀的理解就是類的方法中,誰調用,表示誰,見下面第一個代碼)!!并不是必選項,也就是說在類中,這個不是必須用的,那什么場景需要用到,什么場景不需要用到呢,感興趣的朋友跟隨小編一起看看吧2023-02-02