如何较快写出合适的xpath的小技巧

2020-02-13  本文已影响0人  大白菜995

一,场景

用python写爬虫代码时,如下代码中需要写xpath路径

图中title_path,src_path 写起来xlml比较繁琐,每一层元素都需要写出元素的属性,

那有什么技巧可以方便的写出xpath路径呢

二,准备工作

1,浏览器安装Xpath helper 安装教程链接

2,比如我们要提取豆瓣网上周星驰的所有电影名字网址

三,操作步骤

1,打开网址,在浏览器中按F12  进入Chrome开发者工具,可以查看原代码,点击如下图,

 2, 点击(或用者用快捷键Ctrl+Shift+C)进入选择元素模式,然后从页面中选择需要查看的元素,然后可以在开发者工具元素(Elements)一栏中    定位到该元素源代码的具体位置 。

3,我们的目标是获取所有的电影名字,用图形选择模式,选中其中一个电影如《喜剧之王》如,右侧源代码中自动的的定位到该元素在lxml 位置上  

4,会得到:

/html/body/div[3]/div[1]/div/div[2]/div[1]/div[1]/div[5]/div/div/div[1]/a

可以观察到这个xpath 是根据节点出现的顺序依次写出下个节点的

5,我们在来重复上个步骤工作,选择另一个目标《美人鱼》的xpath定位

/html/body/div[3]/div[1]/div/div[2]/div[1]/div[1]/div[7]/div/div/div[1]/a

可以观察到两个xpath路径非常对应,仅仅在中间的div[]的出现顺序不同,那么我们可以在这个分叉的节点处理下 

6,可以观察到从这个节点下,每个节点对应这个网页中每部电影的模块,只要在这个节点修改元素表示方法即可,发现改节点的class属性较长,不属于常规的特征值,但我们可以观察其子节点的关系

每个子元素的属性相同,且是比较好的特征。

/html/body/div[3]/div[1]/div/div[2]/div[1]/div[1]/div[5]/div/div/div[1]/a

/html/body/div[3]/div[1]/div/div[2]/div[1]/div[1]/div[7]/div/div/div[1]/a

修改如下:

/html/body/div[3]/div[1]/div/div[2]/div[1]/div[1]//div[@class="item-root"]/div/div[1]/a

注意使用  ”//“

7,启动xpath helper 验证,将修改的节点复制到框中,观察结果是否和预想的一样

上一篇下一篇

猜你喜欢

热点阅读