Python爬虫必备之XPath解析库

一、简介

XPath 是一门在 XML 文档中查找信息的语言。XPath 可用来在 XML 文档中对元素和属性进行遍历。XPath 是 W3C XSLT 标准的主要元素,并且 XQuery 和 XPointer 都构建于 XPath 表达之上。

Xpath解析库介绍:数据解析的过程中使用过正则表达式, 但正则表达式想要进准匹配难度较高, 一旦正则表达式书写错误, 匹配的数据也会出错。

网页由三部分组成: HTML, Css, JavaScript, HTML页面标签存在层级关系, 即DOM树, 在获取目标数据时可以根据网页层次关系定位标签, 在获取标签的文本或属性。

二、安装

pip install lxml

三、节点

3.1 选取节点

XPath 使用路径表达式在 XML 文档中选取节点。节点是通过沿着路径或者 step 来选取的。 下面列出了最有用的路径表达式:

表达式 描述
nodename 选取此节点的所有子节点。
/ 从根节点选取。
// 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。
选取当前节点的父节点。
. 选取当前节点。
@ 选取属性。

3.2 选取未知节点

XPath 通配符可用来选取未知的 XML 元素。

通配符 描述
* 匹配任何元素节点。
@* 匹配任何属性节点。
node() 匹配任何类型的节点。

在下面的表格中,我们列出了一些路径表达式,以及这些表达式的结果:

路径表达式 结果
/bookstore/* 选取 bookstore 元素的所有子元素。
//* 选取文档中的所有元素。
//title[@*] 选取所有带有属性的 title 元素。

3.3 节点关系

父(Parent)

每个元素以及属性都有一个父。
在下面的例子中,book 元素是 title、author、year 以及 price 元素的父:

<book>
  <title>Harry Potter</title>
  <author>J K. Rowling</author>
  <year>2005</year>
  <price>29.99</price>
</book>

子(Children)

元素节点可有零个、一个或多个子。
在下面的例子中,title、author、year 以及 price 元素都是 book 元素的子:

<book>
  <title>Harry Potter</title>
  <author>J K. Rowling</author>
  <year>2005</year>
  <price>29.99</price>
</book>

同胞(Sibling)

拥有相同的父的节点
在下面的例子中,title、author、year 以及 price 元素都是同胞:

<book>
  <title>Harry Potter</title>
  <author>J K. Rowling</author>
  <year>2005</year>
  <price>29.99</price>
</book>

先辈(Ancestor)

某节点的父、父的父,等等。
在下面的例子中,title 元素的先辈是 book 元素和 bookstore 元素:

<bookstore>

<book>
  <title>Harry Potter</title>
  <author>J K. Rowling</author>
  <year>2005</year>
  <price>29.99</price>
</book>

</bookstore>

后代(Descendant)

某个节点的子,子的子,等等。
在下面的例子中,bookstore 的后代是 book、title、author、year 以及 price 元素:

<bookstore>

<book>
  <title>Harry Potter</title>
  <author>J K. Rowling</author>
  <year>2005</year>
  <price>29.99</price>
</book>

</bookstore>

四、XPath实例

爬取糗事百科

import requests
# 导包
from lxml import etree
import os
base_url = 'https://www.qiushibaike.com/video/'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36'
}
res = requests.get(url=base_url, headers=headers)
html = res.content.decode('utf-8')
# xpath解析
tree = etree.HTML(html)
# 标题
content = tree.xpath('//*/a/div[@class="content"]/span/text()')
# 视频
video_list = tree.xpath('//*/video[@controls="controls"]/source/@src')
index = 0
for i in video_list:
    # 获取视频二进制流
    video_content = requests.get(url= 'https:' + i,headers=headers).content
    # 标题
    title_1 = content[0].strip('\n')
    # 将视频二进制写入文件
    with open(f'Video/{title_1}.mp4','wb') as f:
        f.write(video_content)
    index += 1

到此这篇关于Python爬虫必备之XPath解析库的文章就介绍到这了,更多相关XPath解析库内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python爬虫之用Xpath获取关键标签实现自动评论盖楼抽奖(二)

    一.分析链接 上一篇文章指路 一般来说,我们参加某个网站的盖楼抽奖活动,并不是仅仅只参加一个,而是多个盖楼活动一起参加. 这个时候,我们就需要分析评论的链接是怎么区分不同帖子进行评论的,如上篇的刷帖链接,具体格式如下: https://club.hihonor.com/cn/forum.php?mod=post&action=reply&fid=154&tid=21089001&extra=page%3D1&replysubmit=yes&infloat=y

  • Python自动化xpath实现自动抢票抢货

    小伙伴们,这次推文讲的是'xpath',掌握起来不难的哦.而且,熟悉了这套路,别说pubmed,任何你能在浏览器实现的操作,都基本能通过selenium自动化进行. 总代码: for i in range(51,56): driver.implicitly_wait(10) ActionChains(driver).move_to_element(driver.find_element_by_xpath('//*[@id="save-results-panel-trigger"]'))

  • python使用XPath解析数据爬取起点小说网数据

    1. xpath 的介绍 xpath是一门在XML文档中查找信息的语言 优点: 可以在xml中找信息 支持HTML的查找 可以通过元素和属性进行导航 但是Xpath需要依赖xml的库,所以我们需要去安装lxml的库. 安装lxml库 我们先要安装lxml的库,直接在pycharm里安装即可: XML的树形结构: 元素-元素-属性-文本 使用XPath选取节点: nodename: 选取此节点的所有节点 /从根节点选择 // 从匹配选择的当前节点选择文档中的节点,而不考虑他们的位置 . 选择当前节

  • python Xpath语法的使用

    一.XMl简介 (一)什么是 XML XML 指可扩展标记语言(EXtensible) XML 是一种标记语言,很类似 HTML. XML 的设计宗旨是传输数据,而非显示数据. XML 的标签需要我们自行定义. XML 被设计为具有自我描述性. XML 是 W3C 的推荐标准. W3School 官方文档:http://www.w3school.com.cn/xml/index.asp (二)XML 和 HTML 的区别 他们两者都是用于操作数据或者结构数据,在结构上大致相同的,但他们在本质上却

  • selenium与xpath之获取指定位置的元素的实现

    今天有点新的与大家分享,关于selenium与xpath之间爬数据获取指定位置的时候,方式不一样哦. 详情可以看我的代码,以b站来看好吧: 查看这href元素,如果是xpath,肯定这么写是没有问题的: i.find_element_by_xpath('./a/@href') 但你再selenium里面这样写会报错,所以要改成这样 i.find_element_by_xpath('./a').get_attribute('href') 这样方可正确 这是一个小案例,关于爬取b站音乐视频,但我的技

  • python selenium xpath定位操作

    xpath是一种在xm文档中定位的语言,详细简介,请自行参照百度百科,本文主要总结一下xpath的使用方法,个人看法,如有不足和错误,敬请指出. 注意:xpath的定位 同一级别的多个标签 索引从1开始 而不是0 1. 绝对定位: 此方法最为简单,具体格式为 xxx.find_element_by_xpath("绝对路径") 具体例子: xxx.find_element_by_xpath("/html/body/div[x]/form/input") x 代表第x个

  • python利用xpath爬取网上数据并存储到django模型中

    帮朋友制作一个网站,需要一些产品数据信息,因为是代理其他公司产品,直接爬取代理公司产品数据 1.设计数据库 from django.db import models from uuslug import slugify import uuid import os def products_directory_path(instance, filename): ext = filename.split('.')[-1] filename = '{}.{}'.format(uuid.uuid4().

  • Python爬虫必备之XPath解析库

    一.简介 XPath 是一门在 XML 文档中查找信息的语言.XPath 可用来在 XML 文档中对元素和属性进行遍历.XPath 是 W3C XSLT 标准的主要元素,并且 XQuery 和 XPointer 都构建于 XPath 表达之上. Xpath解析库介绍:数据解析的过程中使用过正则表达式, 但正则表达式想要进准匹配难度较高, 一旦正则表达式书写错误, 匹配的数据也会出错. 网页由三部分组成: HTML, Css, JavaScript, HTML页面标签存在层级关系, 即DOM树,

  • Python爬虫必备之Xpath简介及实例讲解

    目录 前言 一.Xpath简介 二.Xpath语法规则 语法规则 标签定位 属性定位 索引定位 取文本内容 三.语法规则练习 总结 前言 网上已经有很多大佬发过Xpath,而且讲的都很好,我是因为刚开始学习网络爬虫,对这些基础重要知识不太了解,所以写一下来加深印象,本篇文章只是简单介绍一下Xpath及使用,总体来说比较基础. 一.Xpath简介 XPath(XML Path Language - XML路径语言),它是一种用来确定XML文档中某部分位置的语言. Xpath以XML为基础,提供用户

  • python爬虫指南之xpath实例解析(附实战)

    目录 前言 环境的安装 属性定位 索引定位 取文本 取属性 总结 前言 XPath,全称XML Path Language,即XML路径语言,它是一门在XML文档中查找信息的语言,它最初是用来搜寻XML文档的,但是它同样适用于HTML文档的搜索 XPath的选择功能十分强大,它提供了非常简明的路径选择表达式,另外,它还提供了超过100个内建函数,用于字符串.数值.时间的匹配以及节点.序列的处理等,几乎所有我们想要定位的节点,都可以用XPath来选择 xpath解析原理: 1.实现标签的定位:实例

  • python爬虫教程之bs4解析和xpath解析详解

    目录 bs4解析 原理: 如何实例化BeautifulSoup对象: 用于数据解析的方法和属性: xpath解析 xpath解析原理: 实例化一个etree对象: xpath(‘xpath表达式’) 总结 bs4解析 原理: 1.实例化一个BeautifulSoup对象,并且将页面源码数据加载到该对象中 2.通过调用BeautifulSoup对象中相关的属性或者方法进行标签定位和数据提取 如何实例化BeautifulSoup对象: from bs4 import BeautifulSoup Be

  • Python爬虫的两套解析方法和四种爬虫实现过程

    对于大多数朋友而言,爬虫绝对是学习 python 的最好的起手和入门方式.因为爬虫思维模式固定,编程模式也相对简单,一般在细节处理上积累一些经验都可以成功入门.本文想针对某一网页对  python 基础爬虫的两大解析库(  BeautifulSoup 和  lxml )和几种信息提取实现方法进行分析,以开  python 爬虫之初见. 基础爬虫的固定模式 笔者这里所谈的基础爬虫,指的是不需要处理像异步加载.验证码.代理等高阶爬虫技术的爬虫方法.一般而言,基础爬虫的两大请求库 urllib 和 

  • Python爬虫爬取、解析数据操作示例

    本文实例讲述了Python爬虫爬取.解析数据操作.分享给大家供大家参考,具体如下: 爬虫 当当网 http://search.dangdang.com/?key=python&act=input&page_index=1 获取书籍相关信息 面向对象思想 利用不同解析方式和存储方式 引用相关库 import requests import re import csv import pymysql from bs4 import BeautifulSoup from lxml import e

  • python爬虫要用到的库总结

    python爬虫要用到的库: 请求库:实现 HTTP 请求操作 urllib:一系列用于操作URL的功能. requests:基于 urllib 编写的,阻塞式 HTTP 请求库,发出一个请求,一直等待服务器响应后,程序才能进行下一步处理. selenium:自动化测试工具.一个调用浏览器的 driver,通过这个库你可以直接调用浏览器完成某些操作,比如输入验证码. aiohttp:基于 asyncio 实现的 HTTP 框架.异步操作借助于 async/await 关键字,使用异步库进行数据抓

  • python爬虫之bs4数据解析

    一.实现数据解析 因为正则表达式本身有难度,所以在这里为大家介绍一下 bs4 实现数据解析.除此之外还有 xpath 解析.因为 xpath 不仅可以在 python 中使用,所以 bs4 和 正则解析一样,仅仅是简单地写两个案例(爬取可翻页的图片,以及爬取三国演义).以后的重点会在 xpath 上. 二.安装库 闲话少说,我们先来安装 bs4 相关的外来库.比较简单. 1.首先打开 cmd 命令面板,依次安装bs4 和 lxml. 2. 命令分别是 pip install bs4 和 pip

  • Python爬虫进阶之Beautiful Soup库详解

    一.Beautiful Soup库简介 BeautifulSoup4 是一个 HTML/XML 的解析器,主要的功能是解析和提取 HTML/XML 的数据.和 lxml 库一样. lxml 只会局部遍历,而 BeautifulSoup4 是基于 HTML DOM 的,会加载整个文档,解析 整个 DOM 树,因此内存开销比较大,性能比较低. BeautifulSoup4 用来解析 HTML 比较简单,API 使用非常人性化,支持 CSS 选择器,是 Python 标准库中的 HTML 解析器,也支

  • python爬虫基础教程:requests库(二)代码实例

    get请求 简单使用 import requests ''' 想要学习Python?Python学习交流群:973783996满足你的需求,资料都已经上传群文件,可以自行下载! ''' response = requests.get("https://www.baidu.com/") #text返回的是unicode的字符串,可能会出现乱码情况 # print(response.text) #content返回的是字节,需要解码 print(response.content.decod

随机推荐