网站背景图片优化,怎么申请免费的网站,建筑人才网最新招聘信息息,哪位大神推荐一下好网站Xpath是一种路径查询语言。利用一个路径表达式从html文档中找到我们需要的数据位置#xff0c;进而将其写入到本地或者数据库中。
学习Xpath爬虫#xff0c;我们首先学习一下python中lxml库
关于库
lxml
终端下载Xpath需要用到的模块 pip install lxml 关于HTML
超文本标…Xpath是一种路径查询语言。利用一个路径表达式从html文档中找到我们需要的数据位置进而将其写入到本地或者数据库中。
学习Xpath爬虫我们首先学习一下python中lxml库
关于库
lxml
终端下载Xpath需要用到的模块 pip install lxml 关于HTML
超文本标记语言是用来描述网页的一种语言。主要用于控制数据的显示和外观。HTML文档一定意义上可以被称为网页。但反过来说网页不仅仅是HTML网页本质有三部分构成负责内容结构的HTML负责表现的CSS以及负责行为的javascript。本文主要分享的是最核心的内容结构部分。
html结构
完整的HTML文件至少包括标签、标签、标签和标签并且这些标签都是成对出现的开头标签为结束标签为/在这两个标签之间添加内容。通过这些标签中的相关属性可以设置页面的背景色、背景图像等。
例如我们打开 汽车之家 首页摁下键盘上的F12键打开浏览器自带“开发者工具”可以看到一个完整的html文档结构如下图 打开 中图网 首页摁下键盘上的F12键打开浏览器自带“开发者工具”可以看到一个完整的html文档结构如下图 从上图可以看出一个完整的html文档主要包含三部分DTD文档头head头部信息和body正文信息。其中DTD文档头用来告诉浏览器执行标准是什么比如html4或是html5head头部信息用来说明浏览器的编码方式和文档头名称body顾名思义就是浏览器的正文部分。
html标签
作为开始和结束的标记由尖括号包围的关键词比如 标签对中的第一个标签是开始标签第二个标签是结束标签。html中常见标签如下 其中 “ ul li ”是一种嵌套顺序无序列表成对出现
li的父元素必须是ul或者ol不同之处在于ol是一种有序列列表而ul是无序列表
html属性
属性是用来修饰标签的放在开始标签里里面html中常见四大属性
属性说明class规定元素的类名大多数时候用于指定样式表中的类id唯一标识一个元素的属性在html里面必须是唯一的href指定超链接目标的urlsrc指定图像的url
Xpath
xpath常见使用方法
符号功能//表示在整个文本中查找是一种相对路径/表示则表示从根节点开始查找是一种绝对路径text()找出文本值找出标签对应的属性值比如href就是找出对应的href链接.表示当前节点…表示当前节点的父节点
举个例子定位中图网中图书畅销榜TOP1000书本的位置。
2024年畅销图书排行榜_图书销量排行榜_中图网
定位TOP1图书 在开发者工具这一侧按住ctrlF在浮出的搜索栏里依次输入我们找到top1图书的位置 /html/body/div[class‘content’]/div/div[class‘container’]/div/div[class‘listLeft’]/div[class‘bookList’]/ul/li 这是绝对路径也就是完整路径。
我们也可以通过相对路径//定位到第一本书 //div[class‘listMainclearfix’]/div[2]/div[2]/ul/li 特别注意通过相对路径找到的路径用//开始 且//后面的标签是唯一的。可以在ctrlF浮出的搜索栏里查询该标识符是否出现且唯一 这样我们就在HTML里顺利的找到TOP1的位置啦
当然 Xpath除了上述常见用法外还存在两种比较特殊的用法
以相同的字符开头 用法1以相同的字符开头starts-with(属性部分属性字符相同部分 #例子1
from lxml import etree
html1
!DOCTYPE html
htmlhead langenmeta charestutf-8title/title/headbodydiv idaaa哇哈哈/divdiv idbbb爽歪歪/divdiv idccc营养快线/div/body
/html
# 将符合html格式的字符串转成可以编写xpath语法的格式
info1 etree.HTML(html1)res1 info1.xpath(//div[1]/text())
print(res1, type(res1))
print(------------------)
res2 info1.xpath(//div[2]/text())
print(res2, type(res2))
print(------------------)
res3 info1.xpath(//div[3]/text())
print(res3, type(res3))标签套标签 用法2标签套标签string(.) #例子2
from lxml import etree
html2
!DOCTYPE html
htmlhead langenmeta charestutf-8title/title/headbodydiv idtest3我左青龙,span idtiger右白虎ul上朱雀,li下玄武,/li/ul/span龙头在胸口/div/body
/htmlinfo2 etree.HTML(html2)
res1 str(info2.xpath(string(.)))
res1 res1.replace(\n,).replace( ,).replace(\t,)
print(res1)xpath的谓语结构
所谓谓语条件就是对路径表达式的附加条件。所有的条件都写在方括号[]中表示对节点进行进一步的筛选。例如
?xml version1.0 encodingISO-8859-1?
bookstorebooktitle langengHarry Potter/titleprice29.99/price/bookbooktitle langengLearning XML/titleprice39.95/price/bookbooktitle langengHarry Potter/titleprice29.99/price/bookbooktitle langengLearning XML/titleprice39.95/price/bookbooktitle langengHarry Potter/titleprice29.99/price/bookbooktitle langengLearning XML/titleprice39.95/price/book
/bookstore下面从几个简单的例子让大家体会一下
/bookstore/book[1] 表示选择bookstore的第一个book子元素。/bookstore/book[last()] 表示选择bookstore的最后一个book子元素。/bookstore/book[last()-1] 表示选择bookstore的倒数第二个book子元素。/bookstore/book[position() 3] 表示选择bookstore的前两个book子元素。//title[lang] 表示选择所有具有lang属性的title节点。//title[lang‘eng’] 表示选择所有lang属性的值等于eng的title节点。
函数说明举例contains选取属性或者文本包含某些字符//div[contains(id, ‘data’)] 选取 id 属性包含 data 的 div 元素 //div[contains(string(), ‘支付宝’)] 选取内部文本包含“支付宝”的 div 元素starts-with选取属性或者文本以某些字符开头//div[starts-with(id, ‘data’)] 选取 id 属性以 data 开头的 div 元素 //div[starts-with(string(), ‘银联’)] 选取内部文本以“银联”开头的 div 元素ends-with选取属性或者文本以某些字符开头//div[ends-with(id, ‘require’)] 选取 id 属性以 require 结尾的 div 元素 //div[ends-with(string(), ‘支付’)] 选取内部文本以“支付”结尾的 div 元素
学习了Xpath定位后我们下一篇将用Xpath方法爬取中图网TOP1000的图书信息啦