数据提取-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)

猜你喜欢

转载自blog.csdn.net/qq_41386300/article/details/83614717