1. 程式人生 > >資料提取-Xpath

資料提取-Xpath

1. 介紹

之前BeautifulSoup的用法,這已經是很強大的庫了,不過還有一些比較流行的解析庫,例如lxml,使用的是Xpath語法,同樣是效率比較高的解析方法,如果對BeautifulSoup使用不太習慣,可以嘗試下Xpath

官網:http://lxml.de/index.html
w3c:http://www.w3school.com.cn/xpath/index.asp

2. 安裝

pip install lxml

3.Xpath的語法

3.1選取節點

3.1.1 常用的路徑表示式

在這裡插入圖片描述

3.1.2.萬用字元

XPath萬用字元可用來
選取位置的XML元素
在這裡插入圖片描述

3.1.3 選取若干路徑

通過在路徑表示式中使用“|”運算子,可以選取若干個路徑
在這裡插入圖片描述

3.1.4 謂語

謂語被切在方括號內,用來查詢某個特定的節點或包含某個指定的值的節點
在這裡插入圖片描述

3.1.5 XPath運算子

在這裡插入圖片描述

3.2 使用

小例子:
爬取介面
在這裡插入圖片描述
程式碼:

from lxml import etree
from random import choice
import requests
user_agents=[
    "User-Agent:Mozilla/5.0(Windows;U;WindowsNT6.1;en-us)AppleWebKit/534.50(KHTML,likeGecko)Version/5.1Safari/534.50"
, "User-Agent:Mozilla/5.0(WindowsNT6.1;rv:2.0.1)Gecko/20100101Firefox/4.0.1", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36" ] headers={ "User-Agent":choice(user_agents) } url="https://www.qidian.com/rank/yuepiao?chn=21" response=requests.get
(url,headers) #核心程式碼 e=etree.HTML(response.text) names=e.xpath('//h4/a/text()') authors=e.xpath('//p[@class="author"]/a[1]/text()') for name,author in zip(names,authors): print(name,":",author)