XPATH 常用几种方式

    # h1 = doc.xpath('//h1/text()')
    # print(h1)
    # 获取a标签的href属性
    # a_attrs = doc.xpath('//a/attribute::href')
    # a_texts = doc.xpath('//a/text()')
    content = doc.xpath('//div[contains(@class, "article-content")]')

 fn:contains(string1,string2)的用法

fn:contains(string1,string2)

如果 属性string1 包含 string2,则返回 true,否则返回 false。

例子:contains('XML','XM')  结果:true

如,xml的结构如下:
<?xml version="1.0" encoding="utf-8"?>
<root>
       <sub name="a1"  type="sub" order="1">
                 abcd1
       </sub>
       <sub name="a3"  type="sub" order="2">
                  abcd2
       </sub>
       <sub name="a2"  type="sub" order="3">
                  abcd3
       </sub>
  <sub name="a4"  type="sub" order="3">
                  abcd4
       </sub>
</root>

选取属性 order包含'3'的节点 xPath写法为:

"/root/sub[contains(@order,'3')]" 
    div = doc.xpath('//div[contains(@class,"article-content")]/p')  #itertext()  获取节点下所有元素文本
    #print(div)  #  div 下面属性class包含article-content的下面P的文档-- 列表
    content = ''
    for x in div:
        print(x.itertext())
        content += ''.join(x.itertext()).strip()

intertext()  获取节点下的所有元素文本

cssselect  使用方法

    source = download("https://www.xxx.com")
    doc = etree.HTML(source)
    title =doc.cssselect('h1')
    print(title[0].text)
    article = doc.cssselect('div.article-content p>img')
    metas = doc.cssselect('.benwenshuxing ul.txt-list-1 li')

etree.tostring( ).decode('utf-8')  个比如你获取到正文了,但是你想要里面的HTML源码,而不是纯文本的时候. 可以通过tostring() 实现

etree.HTML(source)  将html内容转化为文档数   格式为<Element html at 0x1fd33b68400>

import requests
from lxml import etree
from html import unescape
source = requests.get('http://www.xiaoxingyun.net/').text

doc = etree.HTML(source)  # 将html内容转化为文档数   格式为<Element html at 0x1fd33b68400>
table_element = doc.xpath("//title")

s1 = etree.tostring(table_element[0]).decode('utf-8')
# 将HTML编码转换为字符串表示
article_content = unescape(s1)
print(article_content)

 获取图片url

    # print(doc.xpath('//title')[0].text)  #  doc.xpath('//title') 返回一个列表
    # scr  = doc.xpath('//span[@id ="zhaiyaotu"]/a/img/attribute::src') 获取img下的src
    # img  = doc.xpath('//span[@id ="zhaiyaotu"]/a/img') 获取图片链接
    # img = doc.cssselect('span#zhaiyaotu a img')  也是获取图片链接
    # for x in content:
    #     tag_string = etree.tostring(x).decode('utf-8')
    #     print(unescape(tag_string))

猜你喜欢

转载自blog.csdn.net/haohaomax1/article/details/110190742