Python实战应用XPath语法:新浪案例详解与实操指南

先看下xpath的一些常用语法规则,这里我用思维导图的方式展示,不想看内容的同学这部分可以看思维导图。知识点干货全程无废话,看完不会你们打我。。

目录

一、什么是xpath?

二、xpath的插件

三、XPATH的语法

1.节点选取

2.谓语(子节点的选取)

3.通配符

 4.选取多个节点

四、xpath语法用python代码实现(这里是步骤思路)

1.导入必要的库和模块:

2.定义网页和请求头

3.entree解析

4.查看标签特征

5.编写xpath获取标签内容

6.打印数据

7.存储数据


一、什么是xpath?

用于提取xml文档中信息的工具

二、xpath的插件

  • Chrome插件:Xpath Helper

  • Firefox插件:xpath Checker

  • 三、XPATH的语法

    1.节点选取

  • nodename:选取此节点的所有子节点
  • //:从全局节点中选择节点

  • /:选取某个节点下的节点

  • @:选取带某个属性的节点

  • .:当前节点下

  • 2.谓语(子节点的选取)

  • //div/a[1]的含义是:选择所有div标签下的第一个a标签

  • //div/a[k]的含义是:选择所有div标签下的第k个a标签,k是大于等于1的自然数

  • //div/a[last()]的含义是:选择所有div下最后一个a标签

  • //div/a[position()<3]的含义是:选取所有div标签下的前两个a标签

  • 3.通配符

  • *:匹配任意节点,如//div[@id='mn']/*(nm为任意的编码或者数值)就是选取所有div标签下拥有id=nm的节点

  • @*:匹配节点中的任何属性,如//div[@*]就是选择拥有属性的所有div标签

  •  4.选取多个节点

  • |:若要同时选择多个节点,则使用|(或)符号,如//meta | //title就是选择meta标签和title标签下的内容。
  • 四、xpath语法用python代码实现(这里是步骤思路)

    1.导入必要的库和模块:

    import requests
    from lxml import etree

    当然了requests和lxml都是第三方库不是python自带的如果你没有安装,打开终端,输入以下命令

    pip install requests
    
    pip install lxml

    2.定义网页和请求头

    这里以新浪网站为例子:

    resp = requests.get('https://www.sina.com.cn/')

     当然了你也可以这样写:

    url = 'https://sina.com.cn/'
    resp = requests.get(url)

    3.entree解析

    #对html字符串进行解析
    html_content = resp.content.decode('utf-8')
    tree = etree.HTML(html_content)

    这里解码格式我们注意查看下网页的源代码,因为有的页面不是utf-8

    4.查看标签特征

    我这里以Firefox的checkerXpath插件为例:

    点击浏览器上方的扩展按钮,如图所示:

    选择checkerXpath这个插件,如果你是Chrome浏览器那你使用的就是Xpath Helper这个插件,表达式都一样,就是工具不同而已,大同小异。

    我们这里选取a标签下所有的b标签里面的内容‘//’:选择页面的根节点 //a/b就是选择整个html页面中的a标签下的子节点b标签。

    右键检查打开查看器可以看到这个xpath表达式所选取的内容,当然在页面中被选中的内容也会高光显示。

    5.编写xpath获取标签内容

    #使用xpath查找内容
    content = tree.xpath('//a/b/text()')

    6.打印数据

    这一步呢其实是为了验证一下,我们爬取到的数据是不是自己想要的数据

    
    for i in content:
      print(i)

    这边我们确定拿到了我们想要的数据

    7.存储数据

    当我们确定拿到了自己想要的数据之后,我们需要把自己需要的数据存储起来,这里我们先讲存储在本地的一些文件格式,后面会讲解如何存储在Mysql数据库中或者我们的MangoDb中。。

    with open('新浪.txt',mode='w+') as f:
      for i in content:
        f.write(i)
        print()

    这里我们存储为txt文档

    以上呢就是我们简单的一个具体流程,如果大家有疑问或者本章中有讲解不当的地方欢迎大家批评指正一起交流,共同学习一起进步~

    作者:裤兜里有钱

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python实战应用XPath语法:新浪案例详解与实操指南

    发表回复