本章目标:了解Xpath的书写方法,并可以运用Xpath定位数据。
一、什么是XPath
XPath 是一门在 XML 文档中查找信息的语言。
二、Xpath在爬虫中的作用
- 定位数据位置;定位数据位置;定位数据位置,重要的事情说三遍
- 我们在定位到数据位置后,才能进行比如点击、输入文本、抓取数据等操作
三、XPath如何定位数据
利用html代码中的 标签 + 属性 进行数据定位
1.什么是标签?
- 标签是HTML中的树状结构中的一个个节点,不同的标签起到不同的作用。
- 标签类似家庭族谱中的一个个人,比如老王的大儿子的三儿子
- HTML中一些常见的标签。
2.什么是属性?
- 属性是用来修饰节点的,比如在a标签,属性可以定义跳转的超链接,或者类名称。
- 属性类似于描述人形容词,比如,戴眼镜,帅气,体重200斤等。
- HTML中的一些常见的属性
四、在HTML中快速找到XPath路径方法
我们尝试在链家上找到元素对应的XPath
- chrome浏览器打开网页:链家上海小区
- 右键点击检查,或者ctrl+shift+i
3. Element标签里即显示HTML代码的内容,红框内的小箭头点击网页元素可以显示元素在html中的位置,找到html中的元素位置,右键 -> copy -> copy XPath,获取XPath
4. 获取到的值为:/html/body/div[4]/div[1]/ul/li[1]/div[1]/div[1]/a
四、解析链家XPath的树状图
比较一下chrome下载获取的XPath:/html/body/div[4]/div[1]/ul/li[1]/div[1]/div[1]/a
可以发现,XPath就是html代码中树状图的一个个节点,其中数字是节点名称出现的序号。(是不是很像家庭族谱中的关系)。
五、通过属性和标签结合获取XPath
1. 如果不填写序号,则可以获取符合网页中符合要求的所有节点。如:/html/body/div[4]/div[1]/ul/li/div[1]/div[1]/a可以定位到所有小区的位置。
2. 用标签结合属性可以达到同样的效果,如div[@class ="title"]可以获取网页中属性class为title的所有节点(但有些非小区名称的数据也会被提取出来)
- 通常,结合标签和属性,可以更简单的获取数据的位置:如://ul/li/div[1]/div[@class="title"]/a 等价于/html/body/div[4]/div[1]/ul/li/div[1]/div[1]/a(注://代表可以不从最根部节点html节点开始)