爬虫的步骤解析内容xpath介绍_爬虫入门到精通-网页的解析(xpath)

本文介绍了XPath在爬虫中的应用,包括其作为XML路径语言的用途,基本使用方法,如相对路径与绝对路径的选择,以及如何通过XPath获取文本、注释和其他属性。通过实例代码演示了如何利用XPath解析HTML,提取所需信息,如标题、链接等。
摘要由CSDN通过智能技术生成

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

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()')

相对路径与绝对路径

12e425ad358d3a12367983baf2f8c27a.png

10376e412ae3924ae9bab28ef1ea92aa.png

总结及注意事项

获取文本内容用 text()

获取注释用 comment()

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

@href

@src

@value

sample2 = """

"""

s2 = getxpath(sample2)

a85e685ed580d34bd9bab52661280aa3.png

总结及注意事项

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

位置默认以1开始的

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

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

sample3 = """

"""

s3 = getxpath(sample3)

d666aadc440d6b5624b0a80bfa707ad1.png

总结及注意事项

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

文本是 text()='xxx'

其它属性是@xx='xxx'

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

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

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

57a1681cd95547df5c56fa5d027aaa28.png

sample4 = u"""

My page

Welcome to my page

This is the first paragraph.

编程语言python

testjavascript

C#JAVA

a

b

c

d

e

f

"""

s4 = etree.HTML(sample4)

4c7af752589cdce6c63bd545dfc43e83.png

总结及注意事项

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

123来获取我啊

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

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

contains 匹配任何位置相等

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

最后再次总结一下

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值