Python爬虫教程-22-lxml-etree和xpath配合使用

时间:2022-08-27 15:36:08

Python爬虫教程-22-lxml-etree和xpath配合使用

  • lxml:python 的HTML/XML的解析器
  • 官网文档:https://lxml.de/
  • 使用前,需要安装安 lxml 包
  • 功能:
    • 1.解析HTML:使用 etree.HTML(text) 将字符串格式的 html 片段解析成 html 文档
    • 2.读取xml文件
    • 3.etree和XPath 配合使用

lxml 的安装

  • 【PyCharm】>【file】>【settings】>【Project Interpreter】>【+】 >【lxml】>【install】
  • 具体操作截图:

    Python爬虫教程-22-lxml-etree和xpath配合使用Python爬虫教程-22-lxml-etree和xpath配合使用Python爬虫教程-22-lxml-etree和xpath配合使用

lxml-etree 的使用

# 先安装lxml

# 用 lxml 来解析HTML代码

from lxml import etree

text = '''
<div>
<ul>
<li class="item-0"><a href="0.html">item 0 </a></li>
<li class="item-1"><a href="1.html">item 1 </a></li>
<li class="item-2"><a href="2.html">item 2 </a></li>
<li class="item-3"><a href="3.html">item 3 </a></li>
<li class="item-4"><a href="4.html">item 4 </a></li>
<li class="item-5"><a href="5.html">item 5 </a></li>
</ul>
</div>
''' # 利用 etree.HTML 把字符串解析成 HTML 文件
html = etree.HTML(text)
s = etree.tostring(html).decode() print(s)

运行结果

Python爬虫教程-22-lxml-etree和xpath配合使用

lxml-etree 的使用

# lxml-etree读取文件
from lxml import etree xml = etree.parse("./py24.xml")
sxml = etree.tostring(xml, pretty_print=True) print(sxml)

运行结果

Python爬虫教程-22-lxml-etree和xpath配合使用

etree和XPath 配合使用

# lxml-etree读取文件
from lxml import etree xml = etree.parse("./py24.xml")
print(type(xml)) # 查找所有 book 节点
rst = xml.xpath('//book')
print(type(rst))
print(rst) # 查找带有 category 属性值为 sport 的元素
rst2 = xml.xpath('//book[@category="sport"]') print(type(rst2))
print(rst2) # 查找带有category属性值为sport的元素的book元素下到的year元素
rst3 = xml.xpath('//book[@category="sport"]/year')
rst3 = rst3[0] print('-------------\n',type(rst3))
print(rst3.tag)
print(rst3.text)

运行结果

etree和XPath 配合使用结果

Python爬虫教程-22-lxml-etree和xpath配合使用

更多文章链接:Python 爬虫随笔


- 本笔记不允许任何个人和组织转载

Python爬虫教程-22-lxml-etree和xpath配合使用的更多相关文章

  1. Python爬虫教程-01-爬虫介绍

    Spider-01-爬虫介绍 Python 爬虫的知识量不是特别大,但是需要不停和网页打交道,每个网页情况都有所差异,所以对应变能力有些要求 爬虫准备工作 参考资料 精通Python爬虫框架Scrap ...

  2. Python爬虫教程-00-写在前面

    鉴于好多人想学Python爬虫,缺没有简单易学的教程,我将在CSDN和大家分享Python爬虫的学习笔记,不定期更新 基础要求 Python 基础知识 Python 的基础知识,大家可以去菜鸟教程进行 ...

  3. Python爬虫教程-33-scrapy shell 的使用

    本篇详细介绍 scrapy shell 的使用,也介绍了使用 xpath 进行精确查找 Python爬虫教程-33-scrapy shell 的使用 scrapy shell 的使用 条件:我们需要先 ...

  4. Python爬虫教程-25-数据提取-BeautifulSoup4(三)

    Python爬虫教程-25-数据提取-BeautifulSoup4(三) 本篇介绍 BeautifulSoup 中的 css 选择器 css 选择器 使用 soup.select 返回一个列表 通过标 ...

  5. Python爬虫教程-24-数据提取-BeautifulSoup4(二)

    Python爬虫教程-24-数据提取-BeautifulSoup4(二) 本篇介绍 bs 如何遍历一个文档对象 遍历文档对象 contents:tag 的子节点以列表的方式输出 children:子节 ...

  6. Python爬虫教程-23-数据提取-BeautifulSoup4(一)

    Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据,查看文档 https://www.crummy.com/software/BeautifulSoup/bs4/doc. ...

  7. Python爬虫教程-21-xpath 简介

    本篇简单介绍 xpath 在python爬虫方面的使用,想要具体学习 xpath 可以到 w3school 查看 xpath 文档 xpath文档:http://www.w3school.com.cn ...

  8. Python爬虫教程-18-页面解析和数据提取

    本篇针对的数据是已经存在在页面上的数据,不包括动态生成的数据,今天是对HTML中提取对我们有用的数据,去除无用的数据 Python爬虫教程-18-页面解析和数据提取 结构化数据:先有的结构,再谈数据 ...

  9. Python爬虫教程-21-xpath

    本篇简单介绍 xpath 在python爬虫方面的使用,想要具体学习 xpath 可以到 w3school 查看 xpath 文档 Python爬虫教程-21-xpath 什么是 XPath? XPa ...

随机推荐

  1. HashMap与HashTable的区别

    HashMap和HashSet的区别是Java面试中最常被问到的问题.如果没有涉及到Collection框架以及多线程的面试,可以说是不完整.而Collection框架的问题不涉及到HashSet和H ...

  2. Chrome 控制台指南

    转自:http://blog.jobbole.com/76985/ Chrome的开发者工具已经强大到没朋友的地步了,特别是其功能丰富界面友好的console,使用得当可以有如下功效: 更高「逼格」更 ...

  3. Linux&lowbar;04------Linux权限的设定

    三种权限 */ /** * 修改文件所有者 * chown 用户名 文件名 */

  4. vim配置php开发环境

    1.ctags-用于代码间的跳转 安装 sudo apt-get install ctags 使用 1). 在某个目录下, 建立tags. ctags -R . --执行之后会在当前目录下生成一个ta ...

  5. linux使用yum安装mariadb

    一,安装 yum install mariadb mariadb-server 二,如何设置密码 用root 进入mysql后  mysql>set password =password('你的 ...

  6. Android初级教程:ViewPage使用详解

    转载本博客,请注明出处:http://blog.csdn.net/qq_32059827点击打开链接 ViewPage使用之一就是轮播广告,就以此为出发点,来详细解析一下ViewPage的使用和加载机 ...

  7. jquery复制图片

    <div class="img-div">           <a href="javascript:void(0);"><im ...

  8. 一个简单的mock server

    在前后端分离的项目中, 前端无需等后端接口提供了才调试, 后端无需等第三方接口提供了才调试, 基于“契约”,可以通过mock server实现调试, 下面是一个简单的mock server,通过pyt ...

  9. 如何导入另一个 Git库到现有的Git库并保留提交记录

    问题描述: 我在本地有两个Git库项目(D1=PC项目 包含通用项目,D2=移动项目 也包含通用项目这两个项目在同一目录下),因为这两个项目使用的通用项目是一样的如数据库访问等   只有显示层(vie ...

  10. MFC工具栏的创建、设计与使用实例

    本文通过实例说明MFC工具栏的创建.设计和使用方法,包括三个demo.       demo1:创建一个工具栏 C++代码 //摘抄自MSDN demo1 (创建一个工具栏) 1.Create a t ...