当前位置: 首页 > news >正文

做电子商务网站 费用网站开发简介

做电子商务网站 费用,网站开发简介,曼联vs维拉直播免费视频直播,渠道网络是什么意思Python3 爬虫学习笔记第七章 —— 【解析库 lxml】文章目录【7.1】关于 lxml【7.2】使用 XPath【7.3】查找所有节点【7.4】查找子节点【7.5】查找父节点【7.6】属性匹配【7.7】文本获取【7.8】属性获取【7.9】一个属性包含多个值的匹配【7.10】多个属性匹配一个节点【7.11】按顺… Python3 爬虫学习笔记第七章 —— 【解析库 lxml】 文章目录【7.1】关于 lxml【7.2】使用 XPath【7.3】查找所有节点【7.4】查找子节点【7.5】查找父节点【7.6】属性匹配【7.7】文本获取【7.8】属性获取【7.9】一个属性包含多个值的匹配【7.10】多个属性匹配一个节点【7.11】按顺序选择节点【7.12】节点轴选择【7.1】关于 lxml lxml 是 Python 的一个解析库支持 HTML 和 XML 的解析支持 XPath 解析方式解析效率非常高使用前需要用命令 pip3 install lxml 安装 lxml 库 【7.2】使用 XPath XPathXML Path Language即 XML 路径语言 lxml 解析库使用的正是 XPath 语法最初是用来搜寻 XML 文档的是一门在 XML 文档中查找信息的语言它同样适用于 HTML 文档的搜索 XPath 常用规则 表达式描述nodename选取此节点的所有子节点/从当前节点选取直接子节点//从当前节点选取子孙节点.选取当前节点…选取当前节点的父节点选取属性*通配符选择所有元素节点与元素名*选取所有属性[attrib]选取具有给定属性的所有元素[attrib‘value’]选取给定属性具有给定值的所有元素[tag]选取所有具有指定元素的直接子节点[tag‘text’]选取所有具有指定元素并且文本内容是text节点 浏览器插件 XPath Helper在线验证 XPath谷歌商店下载地址https://chrome.google.com/webstore/detail/hgimnogjllphhhkhlmebbmlgjoejdpjl XPath 基本使用方法首先使用代码 from lxml import etree导入库然后将 HTML 文档变成一个对象再调用对象的方法去查找指定的节点方法有两种tree etree.parse() 为本地文件查找tree etree.HTML() 为网络文件查找再使用语句 tree.xpath() 查找指定节点。 【7.3】查找所有节点 新建一个 xpath.html 本地文件内容如下 !DOCTYPE html html langen headmeta charsetUTF-8 /titlexpath测试/title /head body div classsong火药b指南针/bb印刷术/b造纸术 /div div classtangulli classbalove停车坐爱枫林晚霜叶红于二月花。/lili idhua商女不知亡国恨隔江犹唱后庭花。/lili classlove nameyang一骑红尘妃子笑无人知是荔枝来。/lili idbei葡萄美酒夜光杯欲饮琵琶马上催。/lilia hrefhttp://www.baidu.com/百度一下/a /li/ulolli classbalucy寻寻觅觅冷冷清清凄凄惨惨戚戚。/lili classlily咋暖还寒时候最难将息。/lili classlilei三杯两盏淡酒。/lili怎敌他晚来风急。/lili雁过也正伤心却是旧时相识。/lili爱情三十六计/lili什么是爱情/li/ol /div /body /html查找所有节点 from lxml import etreehtml etree.parse(./xpath.html) result html.xpath(//*) print(result)使用 * 代表匹配所有节点整个 xpath.html 文件中的所有节点都会被获取到返回形式是一个列表每个元素是 Element 类型其后跟了节点的名称如 html、body、div、ul、li、a 等所有节点都包含在列表中输出结果如下 [Element html at 0x1a836a34508, Element head at 0x1a836a344c8, Element meta at 0x1a836a345c8, Element title at 0x1a836a34608, Element body at 0x1a836a34648, Element div at 0x1a836a346c8, Element b at 0x1a836a34708, Element b at 0x1a836a34748, Element div at 0x1a836a34788, Element ul at 0x1a836a34688, Element li at 0x1a836a347c8, Element li at 0x1a836a34808, Element li at 0x1a836a34848, Element li at 0x1a836a34888, Element li at 0x1a836a348c8, Element a at 0x1a836a34908, Element ol at 0x1a836a34948, Element li at 0x1a836a34988, Element li at 0x1a836a349c8, Element li at 0x1a836a34a08, Element li at 0x1a836a34a48, Element li at 0x1a836a34a88, Element li at 0x1a836a34ac8, Element li at 0x1a836a34b08]【7.4】查找子节点 通过 / 或 // 即可查找元素的子节点或子孙节点 from lxml import etreehtml etree.parse(./xpath.html) result html.xpath(//ul/li) print(result)选择 ul 节点的所有直接 li 子节点 [Element li at 0x2a094d044c8, Element li at 0x2a094d045c8, Element li at 0x2a094d04608, Element li at 0x2a094d04648, Element li at 0x2a094d04688]【7.5】查找父节点 知道了子节点也可以用 … 或者 parent:: 查找其父节点 from lxml import etreehtml etree.parse(./xpath.html) result html.xpath(//ol/../class) print(result)from lxml import etreehtml etree.parse(./xpath.html) result html.xpath(//ol/parent::*/class) print(result)先查找到 ol 节点随后获取其父节点以及其 class 属性 [tang]【7.6】属性匹配 有时候 HTML 包含多个相同名的节点而节点的属性是不一样的此时可以用 符号进行属性过滤 from lxml import etreehtml etree.parse(./xpath.html) result html.xpath(//li[classbalucy]) print(result)xpath.html 文件中只有一个 class 为 balucy 的节点li classbalucy寻寻觅觅冷冷清清凄凄惨惨戚戚。/li运行以上代码将返回一个该元素 [Element li at 0x16e53aa54c8]【7.7】文本获取 使用 text() 方法即可提取节点中的文本 from lxml import etreehtml etree.parse(./xpath.html) result html.xpath(//li[classbalucy]/text()) print(result)输出结果 [寻寻觅觅冷冷清清凄凄惨惨戚戚。]再次观察 xpath.html 文件中的 ol/ol这一部分 olli classbalucy寻寻觅觅冷冷清清凄凄惨惨戚戚。/lili classlily咋暖还寒时候最难将息。/lili classlilei三杯两盏淡酒。/lili怎敌他晚来风急。/lili雁过也正伤心却是旧时相识。/lili爱情三十六计/lili什么是爱情/li /ol 如果我们想要提取 li 节点里面所有的文本就可以使用 html.xpath(//ol/li/text()) 语句 from lxml import etreehtml etree.parse(./xpath.html) result html.xpath(//ol/li/text()) print(result)输出结果 [寻寻觅觅冷冷清清凄凄惨惨戚戚。, 咋暖还寒时候最难将息。, 三杯两盏淡酒。, 怎敌他晚来风急。, 雁过也正伤心却是旧时相识。, 爱情三十六计, 什么是爱情]同样还有另一种方法使用 html.xpath(//ol//text()) 语句// 将会选取所有子孙节点的文本ol 和 li 节点下的换行符也将被提取出来 from lxml import etreehtml etree.parse(./xpath.html) result html.xpath(//ol//text()) print(result)输出结果 [\n , 寻寻觅觅冷冷清清凄凄惨惨戚戚。, \n , 咋暖还寒时候最难将息。, \n , 三杯两盏淡酒。, \n , 怎敌他晚来风急。, \n , 雁过也正伤心却是旧时相识。, \n , 爱情三十六计, \n , 什么是爱情, \n ]【7.8】属性获取 与属性匹配一样属性获取仍然使用 from lxml import etreehtml etree.parse(./xpath.html) result html.xpath(//ul/li[5]/a/href) print(result)获取 href 属性 [http://www.baidu.com/]【7.9】一个属性包含多个值的匹配 某个节点的某个属性可能有多个值例如 li classli li-firsta hreflink.htmlfirst item/a/li li 节点的 class 属性有 li 和 li-first 两个值如果使用 html.xpath(//li[classli] 语句将无法成功匹配这时就需要使用 contains 方法了第一个参数传入属性名称第二个参数传入属性值只要此属性包含所传入的属性值就可以完成匹配了 from lxml import etree text li classli li-firsta hreflink.htmlfirst item/a/li html etree.HTML(text) result html.xpath(//li[contains(class, li)]/a/text()) print(result)输出结果 [first item]【7.10】多个属性匹配一个节点 XPath 还可以根据多个属性来确定一个节点这时就需要同时匹配多个属性。此时可以使用运算符 and 来连接 from lxml import etree text li classli nameitema hreflink.htmlfirst item/a/lihtml etree.HTML(text) result html.xpath(//li[classli and nameitem]/a/text()) print(result)输出结果 [first item]示例中运用了运算符 and 来连接此外常见的运算符如下 运算符描述实例返回值or或age19 or age20如果 age 是 19 或者 20则返回 true。如果 age 是其他值则返回 falseand与age19 and age21如果 age 大于 19 且小于 21则返回 true。如果 age 是其他值则返回 falsemod计算除法的余数5 mod 21|计算两个节点集//book | //cd返回所有拥有 book 和 cd 元素的节点集加法10 515-减法10 - 55*乘法10 * 550div除法10 div 52等于age19如果 age 是 19则返回 true。如果 age 不是 19则返回 false!不等于age!19如果 age 不是 19则返回 true。如果 age 是 19则返回 false小于age19如果 age 小于 19则返回 true。如果 age 不小于 19则返回 false小于或等于age19如果 age 小于等于 19则返回 true。如果 age 大于 19则返回 false大于age19如果 age 大于 19则返回 true。如果 age 不大于 19则返回 false大于或等于age19如果 age 大于等于 19则返回 true。如果 age 小于 19则返回 false 【7.11】按顺序选择节点 某些属性可能同时匹配了多个节点如果要选择其中几个节点可以利用中括号传入索引的方法获取特定次序的节点 from lxml import etreetext divulli classitem-0a hreflink1.htmlfirst item/a/lili classitem-1a hreflink2.htmlsecond item/a/lili classitem-inactivea hreflink3.htmlthird item/a/lili classitem-1a hreflink4.htmlfourth item/a/lili classitem-0a hreflink5.htmlfifth item/a/ul/divhtml etree.HTML(text) result html.xpath(//li[1]/a/text()) print(result) result html.xpath(//li[last()]/a/text()) print(result) result html.xpath(//li[position()3]/a/text()) print(result) result html.xpath(//li[last()-2]/a/text()) print(result)li[1]选取第一个 li 节点li[last()]选取最后一个 li 节点position() 3选取位置小于 3 的 li 节点li[last()-2]选取倒数第三个 li 节点 输出结果 [first item] [fifth item] [first item, second item] [third item]【7.12】节点轴选择 节点轴选择获取子元素、兄弟元素、父元素、祖先元素等 from lxml import etreetext divulli classitem-0a hreflink1.htmlspanfirst item/span/a/lili classitem-1a hreflink2.htmlsecond item/a/lili classitem-inactivea hreflink3.htmlthird item/a/lili classitem-1a hreflink4.htmlfourth item/a/lili classitem-0a hreflink5.htmlfifth item/a/ul/divhtml etree.HTML(text) result html.xpath(//li[1]/ancestor::*) print(result) result html.xpath(//li[1]/ancestor::div) print(result) result html.xpath(//li[1]/attribute::*) print(result) result html.xpath(//li[1]/child::a[hreflink1.html]) print(result) result html.xpath(//li[1]/descendant::span) print(result) result html.xpath(//li[1]/following::*[2]) print(result) result html.xpath(//li[1]/following-sibling::*) print(result)输出结果 [Element html at 0x1d3749e9548, Element body at 0x1d3749e94c8, Element div at 0x1d3749e9488, Element ul at 0x1d3749e9588] [Element div at 0x1d3749e9488] [item-0] [Element a at 0x1d3749e9588] [Element span at 0x1d3749e9488] [Element a at 0x1d3749e9588] [Element li at 0x1d3749e94c8, Element li at 0x1d3749e95c8, Element li at 0x1d3749e9608, Element li at 0x1d3749e9648]基本语法轴名称::节点测试[谓语] 轴名称对应的结果 轴名称结果ancestor选取当前节点的所有先辈父、祖父等ancestor-or-self选取当前节点的所有先辈父、祖父等以及当前节点本身attribute选取当前节点的所有属性child选取当前节点的所有子元素descendant选取当前节点的所有后代元素子、孙等descendant-or-self选取当前节点的所有后代元素子、孙等以及当前节点本身following选取文档中当前节点的结束标签之后的所有节点namespace选取当前节点的所有命名空间节点parent选取当前节点的父节点preceding选取文档中当前节点的开始标签之前的所有节点preceding-sibling选取当前节点之前的所有同级节点self选取当前节点 实例 例子结果child::book选取所有属于当前节点的子元素的 book 节点attribute::lang选取当前节点的 lang 属性child:: *选取当前节点的所有子元素attribute:: *选取当前节点的所有属性child::text()选取当前节点的所有文本子节点child::node()选取当前节点的所有子节点descendant::book选取当前节点的所有 book 后代ancestor::book选择当前节点的所有 book 先辈ancestor-or-self::book选取当前节点的所有 book 先辈以及当前节点如果此节点是 book 节点child:: */child::price选取当前节点的所有 price 孙节点
http://www.pierceye.com/news/740035/

相关文章:

  • gta5 网站正在建设中新品发布会ppt
  • 做的网站每年需要续费idc网站源码
  • 备案主体负责人和网站负责人新网站 seo
  • 网站后台有什么用wordpress 不显示账号名
  • 另类小说 Wordpress长沙seo步骤
  • 网站建设7个基37网游官网
  • 网站设计存在的问题建筑设计私活平台
  • 网站如何做淘宝支付宝wordpress多站点不显示
  • 关于设计的网站免费注册公司
  • 网站建设排名北京网站排名降级的原因有哪些
  • 介绍网页设计做seo推广网站
  • 建立个人博客网站wordpress东城东莞网站建设
  • 从哪些方面建设网站泰州东方医院
  • 分类信息网站系统cmsWordPress新闻面包屑主题
  • wordpress 多标签关键字优化策略
  • idea15网站开发网站如何提升seo排名
  • 谁有网站推荐一下好安阳刚刚发生的事
  • 博客网站快速排名临邑县住房和城乡建设局网站
  • 二手网站建设方案营销网站建设服务平台
  • 遵化建设局网站濮阳新闻综合频道
  • 百度云如何做网站论文网站建设与运营
  • 网站开发环境实验报告注册公司流程和费用是多少
  • 下载一个网站学院网站建设的作用
  • 济南专业网站优化花西子的网络营销策略
  • 武城网站建设费用网页设计试题及答案
  • 郑州外贸网站建设公司搜索引擎排名的三大指标
  • 温州专业微网站制作电台 主题 wordpress
  • wordpress做网站过程阳江网上车管所
  • 网站抓取qq上海自贸区注册公司流程
  • 深圳网站设计推荐刻烟台制作网站有哪些