2018-09-14XML——了解一下^_^

知己知彼,百战不殆。 -------------------------《孙子兵-谋攻篇》

XML是什么?_?

  • 可扩展标记语言,类似于HTML全称(Xtensible Markup Language)
  • 生来便为传输数据,而不是显示数据。
  • XML具有自我描述性,标签需要我们自行定义。

那什么是XPath呢?

它是一门再XML文档中查找信息的语言,用来再XML中对节点和属性进行遍历。

常用的XPath开发环境:

  • 开源的Xpath表达式编辑工具:XMLQuire(XML格式文件可用)
  • Chrome插件:XPath Helper
  • Firefox插件: XPath Checker

接下来,操练起来,孩儿们!!!

首先安装lxml

pip install lxml

接着导入它

from lxml import etree #这样写后面会出现红色波浪线,但是可以正常使用

我们可以下main两行代码解决

import lxml.html
etree = lxml.html.etree

常用的方法

  1. etree.parse()
    读取xml文件,结果为xml对象(object)
  2. etree.HTML(string_html)
    将字符串形式的html文件转化为xml对象
  3. etree.tostring(htmlelemt, encoding = "utf-8").decode("utf-8")
    etree.tostring(html,encoding="utf-8", pretty_print = True).decode()
    按字符串系列化HTML文档
    (注意:这里的tostring的s是小写的,不要写出大写的)

选择器

表达式 描述
nodename 选取此节点内的所有子节点。
/ 从根节点选取(选取直接子节点)
// 在全局搜索,不考虑位置(当用在中间位置是标识所有子孙节点)
. 选取当前节点
.. 选取当前节点的父节点
@ 选取属性(/div[@class = "container"])

实战——用lxml读取html文件

import lxml.html
etree = lxml.html.etree

parser = etree.HTMLParser(encoding = "utf-8")
htmlelement = etree.parse("mafengwo.html", parser = parser)
print(htmlelement)# 此时是对象类型
# 这句代码只在研究时有用,正常时没用
html_string = etree.tostring(htmlelement, encoding = "utf-8").decode("utf-8")
print(html_string)
# 读取innerText
links = htmlelement.xpath("//h3/a[@class='_j_search_link']")
for link in links:
    print(link.text)

# 读取属性的值
with open("mafengwo.html", "r+") as fp:
    content = fp.read()
    html = etree.HTML(content)
    titles = html.xpath("//div/div/span/@title")
    for title in titles:
        print(title)


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 人生苦短,我用Python。 起初,这篇文章是打算来写 XPath 的,可是后来一想,我需要的仅是 XPath 的...
    Moscow1147阅读 20,930评论 1 14
  • lxml 是 一个HTML/XML的解析器,主要的功能是如何解析和提取 HTML/XML 数据。 lxml和正则一...
    编程小王子AAA阅读 10,692评论 0 4
  • 一、简介 XPath 是一门在 XML 文档中查找信息的语言。XPath 可用来在 XML 文档中对元素和属性进行...
    朝畫夕拾阅读 3,582评论 0 1
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,308评论 19 139
  • 今年三月份时候有个老先生告诉我,拿个柳枝插到地上等过了一段时间就会发芽。我当时就感觉挺有意思的,小学时候都学了无心...
    答案是小鬼阅读 1,703评论 0 1