美文网首页
lxml中使用XPath的使用

lxml中使用XPath的使用

作者: 小王同学123321 | 来源:发表于2019-03-12 21:47 被阅读0次
# 我们爬取网页的目的,无非是先定位到DOM树的节点,然后取其文本或属性值

myPage = '''<html>
        <title>TITLE</title>
        <body>
        <h1>我的博客</h1>
        <div>我的文章</div>
        <div id="photos">
         <img src="pic1.jpeg"/><span id="pic1">PIC1 is beautiful!</span>
         <img src="pic2.jpeg"/><span id="pic2">PIC2 is beautiful!</span>
         <p><a href="http://www.example.com/more_pic.html">更多美图</a></p>
         <a href="http://www.baidu.com">去往百度</a>
         <a href="http://www.163.com">去往网易</a>
         <a href="http://www.sohu.com">去往搜狐</a>
        </div>
        <p class="myclassname">Hello,\nworld!<br/>-- by Adam</p>
        <div class="foot">放在尾部的其他一些说明</div>
        </body>
        </html>'''
        
html = etree.fromstring(myPage)或者html = etree.HTML(myPage)

# 一、定位
divs1 = html.xpath('//div')
divs2 = html.xpath('//div[@id]')
divs3 = html.xpath('//div[@class="foot"]')
divs4 = html.xpath('//div[@*]')
divs5 = html.xpath('//div[1]')
divs6 = html.xpath('//div[last()-1]')
divs7 = html.xpath('//div[position()<3]')
divs8 = html.xpath('//div|//h1')
divs9 = html.xpath('//div[not(@*)]')

# 二、取文本 text() 区别 html.xpath('string()')
text1 = html.xpath('//div/text()')
text2 = html.xpath('//div[@id]/text()')
text3 = html.xpath('//div[@class="foot"]/text()')
text4 = html.xpath('//div[@*]/text()')
text5 = html.xpath('//div[1]/text()')
text6 = html.xpath('//div[last()-1]/text()')
text7 = html.xpath('//div[position()<3]/text()')
text8 = html.xpath('//div/text()|//h1/text()')


# 三、取属性 @
value1 = html.xpath('//a/@href')
value2 = html.xpath('//img/@src')
value3 = html.xpath('//div[2]/span/@id')

# 四、定位(进阶)
# 1.文档(DOM)元素(Element)的find,findall方法
divs = html.xpath('//div[position()<3]')
for div in divs:
    ass = div.findall('a')  # 这里只能找到:div->a, 找不到:div->p->a
    for a in ass:
        if a is not None:
            #print(dir(a))
            print(a.text, a.attrib.get('href')) #文档(DOM)元素(Element)的属性:text, attrib

# 2.与1等价
a_href = html.xpath('//div[position()<3]/a/@href')
print(a_href)

# 3.注意与1、2的区别
a_href = html.xpath('//div[position()<3]//a/@href')
print(a_href)

相关文章

  • 爬虫12:解析器lxml

    在python中,主要使用 lxml 库来进行xpath获取(在框架中不使用lxml,框架内直接使用xpath即可...

  • python爬虫之xpath

    一. python使用xpath 使用时先安装 lxml 包 二. xpath简介 XPath,全称 XML Pa...

  • lxml模块

    lxml 模块 简介 xpath定位 详见xpath定位 lxml模块中使用xpath语法定位元素提取属性值或文本...

  • lxml库与Xpath语法

    lxml库使用Xpath语法解析定位网页数据。 lxml库的使用 (1)修正HTML代码 lxml为XML解析库,...

  • 12.lxml模块

    lxml模块 知识点 了解 lxml模块和xpath语法的关系 了解 lxml模块的使用场景 了解 lxml模块的...

  • 【Python爬虫】-【第四周】02-作业

    一、作业内容 学习 XPath 语法。 安装 lxml 模块。 使用 requests 和 lxml 里的 etr...

  • day67-爬虫之xml及beautifulsoup

    1爬虫解析库的使用 Xpath解析库使用Xpath解析库需要先安装lxml库pip3 install lxmlBe...

  • 爬虫学习(二)数据解析

    1.xpath语法 2.1用lxml库解析html字符串和文件 2.2xpath和lxml库配合使用 示例 电影天...

  • lxml中使用XPath的使用

  • python学习第四天

    1.爬虫 大数据 , 提取本地hmtl中的数据 步骤①新建html文件②读取③使用lxml中的xpath语法进行提...

网友评论

      本文标题:lxml中使用XPath的使用

      本文链接:https://www.haomeiwen.com/subject/flvopqtx.html