zoukankan      html  css  js  c++  java
  • 爬虫神器xpath的用法(二)

    爬取网页内容的时候,往往网页标签比较复杂,对于这种情况,需要用xpath的starts-with和string(.)功能属性来处理,具体看事例

    #encoding=utf-8
    from lxml import etree
    html1 = '''
    <!DOCTYPE html>
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <div id="test-1">需要的内容1</div>
        <div id="test-2">需要的内容2</div>
        <div id="testfault">需要的内容3</div>
    </body>
    </html>
    '''
    #提取id属性为test开头的的内容,需要使用xpath的start-with属性
    selector = etree.HTML(html1)
    content = selector.xpath('//div[starts-with(@id,"test")]/text()')
    for each in content:
        print each
    
    #提取多个标签层级的内容,需要使用xpath的string(.)将内容转为字符串再获取
    html2 = '''
    <!DOCTYPE html>
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <div id="test3">
            我左青龙,
            <span id="tiger">
                右白虎,
                <ul>上朱雀,
                    <li>下玄武。</li>
                </ul>
                老牛在当中,
            </span>
            龙头在胸口。
        </div>
    </body>
    </html>
    '''
    selector1 = etree.HTML(html2)
    data = selector1.xpath('//div[@id="test3"]')[0]
    info = data.xpath('string(.)')
    content = info.replace('
    ','').replace(' ','')
    print content

    输出:

    需要的内容1
    需要的内容2
    需要的内容3
    我左青龙,右白虎,上朱雀,下玄武。老牛在当中,龙头在胸口。

  • 相关阅读:
    Mysql 数据库学习笔记03 存储过程
    Mysql 数据库学习笔记02 编程
    Mysql 数据库学习笔记01查询
    Struts2学习笔记04 之 拦截器
    Struts2学习笔记03 之 Result组件
    Group by与having理解
    Spring Assert断言工具类
    字符集、编码
    hibernate中Query的list和iterator区别(续)
    hibernate中Query的list和iterator区别
  • 原文地址:https://www.cnblogs.com/gide/p/5246727.html
Copyright © 2011-2022 走看看