一、Xpath介绍

1)xpath简介

全称为XML Path Language 一种小型的查询语言
说道XPath是门语言,不得不说它所具备的优点: 

可在XML中查找信息 
支持HTML的查找 
通过元素和属性进行导航
python开发使用XPath条件: 由于XPath属于lxml库模块,所以首先要安装库lxml。

2)xpath安装使用

# pip install lxml -i "https://pypi.doubanio.com/simple/"

from lxml import etree
selector=etree.HTML(源码) #将源码转化为能被XPath匹配的格式
selector.xpath(表达式) #返回为一列表

二、xpath查询方法

1)引入html文件(被查询的html)

html_doc = """
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<div class="d1">
    <div class="d2">
            <p class="story">
                <a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>,
                <a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
                <a href="http://example.com/tillie" id="link3">Tillie</a>
            </p>
    </div>
    <div>
        <p id="p1">ALex is dsb</p>
        <p id="p2">Egon too</p>
    </div>
</div>

<div class="d3">
    <a href="http://www.baidu.com">baidu</a>
    <p>百度</p>
</div>

</body>
</html>
"""
html_doc.html

 2)使用方法

import requests
from lxml import etree
headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"
    }
url = "https://news.baidu.com/"
data = requests.get(url,headers=headers).content.decode()

# 转解析类型
xpath_data = etree.HTML(data)

# 调用xpath的方法

# xpath语法1.节点 /
         # 2 跨节点: //
         # 3 精确的标签 //a[@属性="属性值"]    属性加在[]中,再在属性前面加上@
         # 4 标签包裹的内容 text()
         # 5 属性 @href
result = xpath_data.xpath('/html/head/title')
text = xpath_data.xpath('/html/head/title/text()')      # 取文本
print(result)
print(text)

print(xpath_data.xpath('//a'))
print(xpath_data.xpath('//a/text()'))

 

posted on 2018-12-24 10:55  可口_可乐  阅读(188)  评论(0编辑  收藏  举报