1、基本使用
from lxml import etree
text =
''' **標題的效果
四級標題的效果
'''# 利用 etree.html ,將字串解析為 html 檔案
html = etree.html(text)
# 將字串序列化為 html 文件
2、從檔案中讀取 html **
from lxml import etree
'''使用lxml.etree.parse()解析html檔案,該方法預設使用的是「xml」解析器,所以如果碰到不規範的html檔案時就會解析錯誤,報錯**如下:
lxml.etree.xmlsyntaxerror: opening and ending tag mismatch: meta line 3 and head, line 3, column 87
解決辦法:
自己建立html解析器,增加parser引數
'''parser = etree.htmlparser(encoding=
"utf-8"
)# 讀取外部檔案 lizi.html
html = etree.parse(
'c:/users/asus/desktop/lizi.html'
,parser = parser)
result = etree.tostring(html,pretty_print =
true
,encoding =
'utf-8'
)print
(result.decode(
'utf-8'
))
3、在 lxml 中使用 xpath 語法
from lxml import etree
parser = etree.htmlparser(encoding=
"utf-8"
)html = etree.parse(
'tengxun.html'
,parser = parser)
# 1. 獲取所有的 meta 標籤
# xpath 函式返回的是乙個列表
metas = html.xpath(
'//meta'
)for meta in metas:
print
(etree.tostring(meta,encoding =
'utf-8'
).decode(
'utf-8'))
# 2. 獲取第二個 meta 標籤
metas = html.xpath(
'//meta[2]')[
0]print
(etree.tostring(metas,encoding =
'utf-8'
).decode(
'utf-8'))
# 3. 獲取所有 class 等於 recruit-share 的 div 標籤
divs = html.xpath(
'//div[@class="recruit-share"]'
)for div in divs:
print
(etree.tostring(div,encoding =
'utf-8'
).decode(
'utf-8'))
# 4. 獲取所有 a 標籤的 class 屬性
alist = html.xpath(
'//a/@class'
)for a in alist:
print
(a)# 5. 獲取所有的職位資訊
divs = html.xpath(
'//div[@class="recruit-list"]'
)positions =
for div in divs:
# 在某個標籤下,在執行 xpath 函式,獲取這個標籤下的子孫元素
# 那麼應該在 // 之前加乙個點,代表在當前元素下獲取
text = div.xpath(
'.//h4')[
0]# text() 是取文字函式,這裡相當於 //h4/text()
title = text.xpath(
'text()')[
0]sector = div.xpath(
'./a/p/span[1]/text()')[
0]address = div.xpath(
'./a/p/span[2]/text()')[
0]category = div.xpath(
'./a/p/span[3]/text()')[
0]time = div.xpath(
'./a/p/span[4]/text()')[
0]position =
print
(positions)
python3爬蟲實踐(二) 爬蟲前奏
1.1 什麼是網路爬蟲 1.2 通用爬蟲和聚焦爬蟲 2.1 什麼是 http 和 https 協議 2.2 在瀏覽器中傳送乙個 http 請求的過程 2.3 url 詳解 scheme host port path query string anchor2.4 常用請求方法 get 請求 一般情況下...
python3爬蟲實踐(七) xpath介紹
1 什麼是 xpath 2 xpath 開發工具 3 xpath 語法 表示式描述 示例結果 nodename 選取此節點的所有節點 bookstore 選取 bookstore 下所有的子節點 如果是在最前面,代表從根節點擊取。否則選擇某節點下的某個節點 bookstore 選取根元素下所有的 b...
python3爬蟲實戰(3)
今天心血來潮去爬取了一下招聘 的實時招聘資訊。是 選的條件是北京,實習生,計算機軟體。分析 之後發現還是很容易的,不過過程中出了不少小問題,在這裡分享一下。想要爬取的是類似的表單內容。是在ul的li裡。用beautifulsoup解析之後,tem ul bsoj.find ul 存下整個ul元素。對...