xpath:最常用且最便攜高效的一種解析方式,通用性。
xpath解析原理:
1.例項化乙個etree的物件,且 需要將被解析的頁面原始碼資料載入到該物件中。
2.呼叫etree物件中的xpath 方法結合著xpath表示式實現標籤的定位和內容的捕獲。
環境的安裝:
pip install lxml
如何例項化乙個etree物件
from lxml import etree
1.將本地的 html文件中的 原始碼資料載入到 etree物件中:
etree.parse(filepath)
2.可以將從網際網路上獲取的原始碼資料載入到該物件中
etree.html(『page_text』)
xpath(『xpath表示式』)
xpath表示式
/表示乙個層級
//表示的是多個層級
下面三種表達方式得到的結果是一樣的hg
/html/body/div
/html//div
//div
屬性定位://div[@class=『song』]/ tag[@attrname=「attrvalue」]
輸出第三個p索引是從1開始的,不是0
//div[@class=「song」]/p[3]
取文字/text() 獲取的是便簽中 直系的文字內容
//text()獲取的是標籤中非直系的文字,在多個層級之後的標籤中的文字也能獲得。
取屬性/@屬性名
例:爬58同城二手房資訊
import requestsfrom lxml import etree
import requests
if __name__ ==
'__main__'
: headers =
#爬取到頁面原始碼資料
url =
''response = requests.get(url=url, headers=headers).text
#資料解析
tree = etree.html(response)
#儲存li標籤物件
li_list = tree.xpath(
'//ul[@class="house-list-wrap"]/li'
) fp = open(
'58.txt','w',encoding=
'utf-8'
)#解析單獨的li標籤
for li in li_list:
title = li.xpath(
'./div[2]/h2/a/text()'
)[0]
fp.write(title +'\n'
)
from lxml import etree
import os
if __name__ ==
"__main__"
: url =
''headers =
response = requests.get(url=url, headers=headers)
#設定響應資料的編碼格式
page_text = response.text
#資料解析:src的屬性值 alt屬性
tree = etree.html(page_text)
li_list = tree.xpath(
'//div[@class="slist"]//li'
)#建立乙個資料夾
#通用處理中文亂碼的解決方案
img_name = img_name.encode(
'iso-8859-1'
).decode(
'gbk'
)# print(img_name, img_src)
#print(img_name, img_src)
#請求進行持久化儲存
img_data = requests.get(url=img_src,headers=headers).content
img_path =
'piclibs/' + img_name
with open(img_path, 'wb'
) as fp:
fp.write(img_data)
)
10x程式設計師工作法筆記
我在某平台上學習10x程式設計師工作法,特此記錄下我結合工作中實際情況對10x程式設計師工作法的理解與總結 作為程式設計師,我們將其看作乙個值得全情投入的職業,希望能夠把精力放在設計演算法 改進設計 優化系統這些具有創造性與成就感的本職工作上。由於偶然複雜度造成的差距會有多大呢?1975 年,弗雷德...
10X單細胞測序細胞分類
介紹 文章對已知的多種細胞系混合後進行單細胞10x rna測序,研究多轉殖之間的互作模式。我們這裡介紹裡面的單細胞測序基因表達細胞分類操作。不過文章選用的是已知固有snp進行分類,基因表達分類用於和snp分類進行比較。講解 讀入qc後的seurat obj,過濾 見之前的部落格 根據測序的細胞系個數...
榮耀x10和小公尺10x的區別 哪個好
紅公尺10x採用6.57英吋e2材質的三星amoled螢幕,支援螢幕指紋識別。紅公尺10x正面螢幕採用了水滴屏的設計,相信對於螢幕有強迫症的小夥伴肯定不會喜歡!榮耀x10更多使用感受和評價 榮耀10x為了成全 曲面屏 則採用了公升降前置攝像頭的設計!榮耀10x的背面後置攝像頭的設計則繼承了華為p系列...