定位元素:八爪鱼通过Xpath来实现元素的定位。


适用情况:八爪鱼自动定位方式不能满足需求的情况。


下面演示如何通过自定义定位元素方式来修改元素匹配的Xpath,借此修改提取元素步骤采集到的数据。


示例网址http://www.skieer.com/guide/demo/genremoviespage1.html

步骤一:点击自定义采集下的立即使用→输入网址并保存


自定义定位元素1

步骤二:点击采集位置→循环采集元素→补充并修改提取元素步骤

自定义定位元素2

 

说明:循环采集元素会采集所有信息,我们在补充并修改提取元素步骤进行了删除第一个字段操作,同时添加了我们需要的正确字段。

 

步骤三:修改自定义定位元素方式

选中要修改的字段→点击高级选项中自定义数据字段(如下图)→点击自定义定位元素方式

1 

进入自定义定位元素方式后,我们在下图红框处修改Xpath

3 

其中元素匹配的Xpath是指可以通过这个Xpath路径在网页中直接找到所需数据的路径;相对Xpath指相对于循环Xpath的路径,将循环中的Xpath接上相对Xpath路径就可以生成一条直接匹配元素的路径。下面进行演示。

演示中使用了火狐浏览器的Firebug插件,详细使用情况请到Xpath使用教程中查看。

自定义定位元素4

如图,示例中将循环中的Xpath和字段对应的相对Xpath接在一起,在浏览器中可以查找到所有的标题。

假如我们想通过Xpath的修改采集其他的字段怎么采集呢?

下面演示如何通过自定义定位元素方式修改标题字段的Xpath使之采集的内容变成类型中的内容

步骤1.找出类型所在的Xpath是怎样的

自定义定位元素5

说明

我们知道循环中的内容为每个需要采集的内容所在的位置,我们将循环中的Xpath复制进入浏览器也看到匹配到了所有电影的框。

随后我们查看类型所在的Xpath,可以看到如下图:

4 

查看到的Xpathhtml/body/div/div/ul/li[1]/span[2]/span/span

 

步骤2.修改Xpath使之定位到所有的电影类型。

因为我们知道LI元素定位三个电影整体的框,所以我们将循环中的//LI[@class='movie']替换到类型所在的Xpath中,形成Xpath为:

//LI[@class='movie']/span[2]/span/span

元素前//表示不论LI在何处都匹配,所以可以省掉前面所有的元素。

此时我们的得到的Xpath就可以匹配所有的电影类型

5 

可以看到该Xpath可以定位到红色箭头位置所示的3个元素,红框中也标出了类型,我们一共在该页只有三个电影,所以我们就得到了所有电影类型的Xpath

 

步骤3.将得到的Xpath放入自定义定位元素方式中

自定义定位元素6

说明

复制元素匹配Xpath后,因为我们知道循环XpathLI元素,所以我们复制LI元素后的部分进入相对Xpath中。

通过手动运行三个电影验证标题是否改为类型,确定改变,会跟着变化,修改完成。

 

步骤四.保存并启动→数据导出

自定义定位元素7