资讯专栏INFORMATION COLUMN

爬虫入门到精通-网页的解析(xpath)

ispring / 742人阅读

摘要:起初的提出的初衷是将其作为一个通用的介于与间的语法模型。的基本使用要使用我们需要下载,在爬虫入门到精通环境的搭建这一章也说明怎么装,如果还没有安装的话,那就去下载安装吧直接看代码实战吧。

本文章属于爬虫入门到精通系统教程第六讲

在爬虫入门到精通第五讲中,我们了解了如何用正则表达式去抓取我们想要的内容.这一章我们来学习如何更加简单的来获取我们想要的内容.

xpath的解释

XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。
XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力。起初XPath的提出的初衷是将其作为一个通用的、介于XPointer与XSL间的语法模型。但是XPath很快的被开发者采用来当作小型查询语言。

XPath的基本使用

要使用xpath我们需要下载lxml,在爬虫入门到精通-环境的搭建这一章也说明怎么装,如果还没有安装的话,那就去下载安装吧

直接看代码实战吧。

from lxml import etree
# 定义一个函数,给他一个html,返回xml结构
def getxpath(html):
    return etree.HTML(html)

# 下面是我们实战的第一个html
sample1 = """
  
    My page
  
  
    

Welcome to my page

This is the first paragraph.

""" # 获取xml结构 s1 = getxpath(sample1) # 获取标题(两种方法都可以) #有同学在评论区指出我这边相对路径和绝对路径有问题,我搜索了下 #发现定义如下图 s1.xpath("//title/text()") s1.xpath("/html/head/title/text()")

相对路径与绝对路径


总结及注意事项

获取文本内容用 text()

获取注释用 comment()

获取其它任何属性用@xx,如

@href

@src

@value

sample2 = """

  
    
  

"""
s2 = getxpath(sample2)

总结及注意事项

上面的li 可以更换为任何标签,如 p、div

位置默认以1开始的

最后一个用 li[last()] 不能用 li[-1]

这个一般在抓取网页的下一页,最后一页会用到

sample3 = """
  
    
  

"""
s3 = getxpath(sample3)

总结及注意事项

根据html的属性或者文本直接定位到当前标签

文本是 text()="xxx"

其它属性是@xx="xxx"

这个是我们用到最多的,如抓取知乎的xsrf(见下图)

我们只要用如下代码就可以了

 `//input[@name="_xsrf"]/@value `

    sample4 = u"""
    
      
        My page
      
      
        

Welcome to my page

This is the first paragraph.

编程语言python javascript C#JAVA

a

b

c

d

e

f

""" s4 = etree.HTML(sample4)

总结及注意事项

想要获取某个标签下所有的文本(包括子标签下的文本),使用string

123来获取我啊

,这边如果想要得到的文本为123来获取我啊",则需要使用string

starts-with 匹配字符串前面相等

contains 匹配任何位置相等

当然其中的(@class,"content")也可以根据需要改成(text(),"content")或者其它属性(@src,"content")

最后再次总结一下

看完本篇文章后,你应该要

能学会基本所有的xpath的使用

css和这个的原理一样,所以就不介绍了,可以参考

CSS 选择器参考手册

所有代码在kimg1234/pachong

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/38584.html

相关文章

  • 精通Python网络爬虫(0):网络爬虫学习路线

    摘要:以上是如果你想精通网络爬虫的学习研究路线,按照这些步骤学习下去,可以让你的爬虫技术得到非常大的提升。 作者:韦玮 转载请注明出处 随着大数据时代的到来,人们对数据资源的需求越来越多,而爬虫是一种很好的自动采集数据的手段。 那么,如何才能精通Python网络爬虫呢?学习Python网络爬虫的路线应该如何进行呢?在此为大家具体进行介绍。 1、选择一款合适的编程语言 事实上,Python、P...

    spacewander 评论0 收藏0
  • Python爬虫入门教程 9-100 河北阳光理政投诉板块

    摘要:河北阳光理政投诉板块开始撸代码今天再次尝试使用一个新的模块,它可以配合快速解析文档,官网网站利用安装,如果安装失败,可以在搜索引擎多搜搜,内容很多,有解决方案。 1.河北阳光理政投诉板块-写在前面 之前几篇文章都是在写图片相关的爬虫,今天写个留言板爬出,为另一套数据分析案例的教程做做准备,作为一个河北人,遵纪守法,有事投诉是必备的技能,那么咱看看我们大河北人都因为什么投诉过呢? 今天要...

    _ipo 评论0 收藏0
  • Python爬虫入门教程 9-100 河北阳光理政投诉板块

    摘要:河北阳光理政投诉板块开始撸代码今天再次尝试使用一个新的模块,它可以配合快速解析文档,官网网站利用安装,如果安装失败,可以在搜索引擎多搜搜,内容很多,有解决方案。 1.河北阳光理政投诉板块-写在前面 之前几篇文章都是在写图片相关的爬虫,今天写个留言板爬出,为另一套数据分析案例的教程做做准备,作为一个河北人,遵纪守法,有事投诉是必备的技能,那么咱看看我们大河北人都因为什么投诉过呢? 今天要...

    cppowboy 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<