在使用python爬虫的时候,我们需要分析网页元素,定位我们需要的内容。那么,如何在python爬虫过程中定位我们需要的内容的位置呢?接下来我们就来说说xpath定位。
xpath可以定位文档中的节点。使用xpath可以在无法通过名字和id进行定位的时候,方便高效的查找元素。
比如我们在如下的文档中定位我们需要的内容:
比如定位这个表单,我们可以使用绝对定位:/html/body/form[1],这种定位方式很容易受到HTML网页的改变而失效。那么我们看这个表单,可以发现这个表单是这个页面的第一个表单元素,因此可以这样://form[1],但是如果这个页面做了更新,比如增加了新的表单,这种方式可能也会失效。那么,还可以通过这个表单的id来进行定位://form[@id-'loginForm]',这样通过id定位了这个表单,是相对来说比较好的一种方式。
那么,如果我们要定位这个表单中的元素,比如name=username这个input元素,可以这样://form[input/@name='username'],我们定位form元素中的input元素,并且这个input元素的name是username。观察这个表单的结构,我们发现username这个input元素是这个表单中第一个input元素,因此也可以这样来定位这个input元素://form[@id='loginForm']/input[1]。除此之外,我们还可以这样定位这个元素://input[@name='username'],这里定位name值为username的input元素。
如果我们想定位界面上的按钮。比如这个clear按钮,可以这样来实现://input[name='continue][@type='button'],这里我们定位了name为continue种类为button的按钮,因为这里我们看到,name属性并不能唯一确定这个按钮,所以我们需要同时引入type属性的值来帮助我们定位这个按钮。