python爬虫之xpath的使用

        当使用requests爬取得到html文档(静态网页)之后,需要从html文档字符串中提取和筛选出我们想要的数据,使用xpath来处理解析之后的html文档字符串,就可以快速的寻找和提取数据。

        xpath的定位思路是利用html中的标签嵌套层级关系,利用路径的形式来匹配相应的元素节点,并返回匹配得到的节点对象(内容)。例如:html为根目录节点,html/body/div表示body中的一个div标签。

        学习xpath主要学习其定位方法:包括绝对定位、相对定位、如何确定同一个层级下的指定的标签(利用属性)、从某个节点向前或向后定位节点、定位元素内容、定位属性…

        xpath并没有返回定位得到的节点对象,而是将元素内容和标签属性都当做路径来进行定位,如:tree.xpath('//div[@class="song"]/img/@src')中的@src就表示这张图片的url,并没有提供get方法或者attrs等属性来获取属性。

        另外也可以使用浏览器开发工具自动生成xpath路径或者使用xpath helper插件来调试xpath路径,就不需要我们花心思去构造xpath路径了。

目录

一,html文档中的元素层级关系图

二,数据预处理

2.1 使用lxml的etree.Html&parse函数

2.2 使用parsel.Selector()函数

三,xpath语法

3.1 常用的基础语法

3.2 语法进阶

3.2.1 谓语

3.2.2 运算符

3.3.3 函数

3.3.4 Xpath的轴及其实例

四,xpath实例实战

4.1 给定例子写路径

4.2 给定代码说出代码功能

五,Xpath Helper插件的安装


一,html文档中的元素层级关系图

        概括的分类有下面三类。而子子节点(孙子节点)也可以看成是某个节点的子节点,为了记忆,不需要使用子子节点这种节点关系。

python爬虫之xpath的使用_第1张图片

二,数据预处理

        预处理是指将给定的文档字符串进行格式化,例如:将不全的标签进行补全,将层级关系没有对齐的对齐……

2.1 使用lxml的etree.Html&parse函数

from lxml import etree
etree.parse(filePath,) #本地的文件路径
etree.HtML('page_text') #page_ text互联网中响应的数据

2.2 使用parsel.Selector()函数

from parsel import Selector

# html 可以是请求某个网页的源码,也可以是html,xml格式的字符串
selector = Selector(html)

        得到selector对象之后就可以使用selector.xpath(路径字符串)来进行定位元素节点。下面将要介绍用pasel库使用xpath语法。

三,xpath语法

3.1 常用的基础语法

        /:从html节点开始绝对定位&进入到下一个层级,eg:tree.xpath('/html/body/div') 。

        //:从任意位置开始相对定位,eg:('//div[@class="song"]/p[3]')。

        .:表示当前节点;..:表示当前节点的上一个节点。(类似于cmd的cd命令)。

        @:用于匹配带有属性内容的元素节点,写在[]里面,例如:[@class="header"],他的作用就是修饰一个节点,以便于准确定位,如:tree.xpath('//div[@class="song"]/p[3]'),[@class="song"]用于修饰div标签,表示从这个div相对定位。

        text():表示元素内容。

        [index]:表示同一个层级中的第几个。如:tree.xpath('//div[@class="tang"]//li[5]/a/text()')[0]。

        *:通配符,如"//div//*"选取div容器中的所有节点。

        @*:@表示属性,@*表示任意属性,如[@*]。

        node():某节点下的所有节点。

python爬虫之xpath的使用_第2张图片

3.2 语法进阶

        利用上面的基础语法基本上可以匹配到html文档任何地方的内容了,下面的语法不常用,截图来自各位大佬的博文。

3.2.1 谓语

python爬虫之xpath的使用_第3张图片

python爬虫之xpath的使用_第4张图片

python爬虫之xpath的使用_第5张图片

3.2.2 运算符

python爬虫之xpath的使用_第6张图片

3.3.3 函数

python爬虫之xpath的使用_第7张图片

3.3.4 Xpath的轴及其实例

python爬虫之xpath的使用_第8张图片

python爬虫之xpath的使用_第9张图片

四,xpath实例实战

4.1 给定例子写路径

        文档字符串:

python爬虫之xpath的使用_第10张图片

        实战:extract()返回一个列表,列表内容为匹配得到的元素节点。

python爬虫之xpath的使用_第11张图片

python爬虫之xpath的使用_第12张图片

4.2 给定代码说出代码功能

#coding=utf-8

from lxml import etree

html = '''


  
    
    友情链接查询 - 站长工具
    
    
    

  
  
    

Top News

    

World News only on this page

    Ah, and here's some more text, by the way.     

... and this is a parsed fragment ...

    青少年发展基金会     洛克王国     奥拉星     手机游戏     手机壁纸     4399小游戏     91wan游戏    ''' # 下面代码的功能是什么? page = etree.HTML(html.lower().decode('utf-8')) hrefs = page.xpath(u"//a") for href in hrefs: print href.attrib

        更多用法总结在这里。实战1。实战2。

五,Xpath Helper插件的安装

        打开每个浏览器的应用程序拓展商店,搜索Xpath Helper安装之后,重启浏览器即可。这个插件的主要作用就是验证我们构思的xpath路径是否正确及是否能够匹配到内容。

你可能感兴趣的:(python爬虫,python,爬虫,开发语言)