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