python爬虫——xpath

XPath非python标准库,是lxml库里的一个支持模块,需安装:pip install lxml

lxml python 官方文档:http://lxml.de/index.html

XPath,全称 XML Path Language,即 XML 路径语言,它是一门在 XML 文档中查找信息的语言。最初是用来搜寻 XML 文档的,但同样适用于 HTML 文档的搜索.

XPath的功能非常强大,几乎所有想要定位的节点都可以用 XPath 来选择。

官方文档:https://www.w3.org/TR/xpath/

中文文档:https://www.w3school.com.cn/xpath/index.asp

1. XPath常用规则

表 达 式 描 述
nodename 选取此节点的所有子节点
/ 绝对路径,从当前节点选取直接子节点
// 从当前节点选取子孙节点
. 选取当前节点
选取当前节点的父节点
@ 选取属性
* 通配符,代表全部,如//*代表选取当前节点的所有子孙节点
[] 方括号内指定属性值或索引,如://div[@class=‘ul’] 表示选择当前节点下所有class='ul’的子孙div节点

最好在浏览器中安装一个插件:Xpath helper,谷歌浏览器直接科学上网去谷歌插件商店下载安装。
有了这个插件,可以直接在网页上操作Xpath表达式,准确的选择需要的数据。

2. 数据解析

2.1 Xpath基本概念**

在 XPath 中,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档(根)节点。XML和HTML文档是被作为节点树来对待的。树的根被称为文档节点或者根节点。

<html lang="en">#根节点
<head>
    <meta charset="UTF-8">#charset="UTF-8"是元素
    <title>Titletitle>#Title是文本
head>#一对标签之间是命名空间

2.2 数据导入

2.2.1 HTML文件导入——etree.parse()

首先准备一个html文件:练习.html

DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Titletitle>
head>
<body>
<div id="cont">
<ul class="slist">
<li class="item-0">web开发li>
<li class="item-1"><a href="link2.html">爬虫开发a>li>
<li class="item-0 active"><a href="link3.html"><span class="bold">数据分析span>a>li>
<li class="item-1 active"><a href="link4.html">深度学习a>li>
<li class="item-0"><a href="link5.html">机器学习a>li>
ul>
div>
body>
html>

然后导入,解析,tostring()转换成字符串,默认parse()解析结果中的中文是Unicode编码,所以需要声明文件类型也就是解码模式method=“html”,并重新编码 encoding=‘unicode’(按理说应该编码’utf-8’,但是实际操作不行,原理不明。。。):

from lxml import etree

你可能感兴趣的:(python爬虫,python,爬虫)