zoukankan      html  css  js  c++  java
  • xpath的一般用法与特殊用法

    # xpath的使用
    安装lxml
    from lxml import etree
    Selector = etree.HTML(网页代码)
    Selector.xpath(一段神奇的代码)
    
    xpath的一般用法
    //定位根节点
    /表示往下层寻找
    /text()提取文本内容
    /@***提取属性
    
    例: response.xpath('//ul[@id="useful"]/li/text()')
    中括号[]表示限定ul的条件,这里表示id为useful的ul标签
    
    xpath的特殊用法
    
    第一种情况:以相同的字符开始的情况,提取以下三个内容难道要写三次?
    解决方法:用starts-with(@属性名称,属性相同的部分)
    举例:
    <div id='test-1'>需要的内容1</div>
    <div id='test-2'>需要的内容2</div>
    <div id='test-fault'>需要的内容3</div>
    方案:response.xpath("//div[starts-with(@id, 'test')]/text()")
    
    
    第二种情况:标签套标签,下面的情况如何提取成一句完整的话?div套着的标签如何提取?
    解决方法:string(.)
    举例:
    html = '''
    <div id="class3">
        我左青龙,
        <span id='tiger'>
            右白虎,
            <ul>上朱雀,
                <li>下玄武.</li>
            </ul>
            老牛在当中,
        </span>
        龙头在胸口.
    </div>
    '''
    # 方案:
    from lxml import etree
    selector = etree.HTML(html)
    data = selector.xpath('//div[@id="class3"]')[0]
    info = data.xpath('string(.)')#实际上是去除了div中间的其他多余标签
    print(info)
    content2=info.replace('
    ','').replace(' ','')#将换行与空格分别取代
    print(content2)
    
    # 输出结果:我左青龙,右白虎,上朱雀,下玄武.老牛在当中,龙头在胸口.
  • 相关阅读:
    jQuery笔记(1)
    [bzoj 1878][SDOI2009]HH的项链
    [bzoj 1968][Ahoi2005]COMMON 约数研究
    [bzoj 1899][ZJOI2004]lunch 午餐
    [bzoj 1090][SCOI2003]字符串折叠
    CodeForces 1029E div3
    [bzoj 1270][BeijingWc2008]雷涛的小猫
    [bzoj 1260][CQOI 2007]涂色paint
    [AtCoder ARC101D/ABC107D] Median of Medians
    [luogu 1070]道路游戏(NOIP2009T4)
  • 原文地址:https://www.cnblogs.com/themost/p/7077786.html
Copyright © 2011-2022 走看看