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

企业备案 网站名称十堰哪家网站制作公司技术好

企业备案 网站名称,十堰哪家网站制作公司技术好,企业解决方案中的关键点,正邦网站建设原文链接https://cuiqingcai.com/2621.html 前言 前面我们介绍了 BeautifulSoup 的用法#xff0c;这个已经是非常强大的库了#xff0c;不过还有一些比较流行的解析库#xff0c;例如 lxml#xff0c;使用的是 Xpath 语法#xff0c;同样是效率比较高的解析方法。如果大…原文链接https://cuiqingcai.com/2621.html 前言 前面我们介绍了 BeautifulSoup 的用法这个已经是非常强大的库了不过还有一些比较流行的解析库例如 lxml使用的是 Xpath 语法同样是效率比较高的解析方法。如果大家对 BeautifulSoup 使用不太习惯的话可以尝试下 Xpath。 参考来源 lxml 用法源自 lxml python 官方文档更多内容请直接参阅官方文档本文对其进行翻译与整理。 lxml XPath 语法参考 w3school w3school 视频资源 如果你对 XPath 不熟悉的话可以看下这个视频资源 web 端功能自动化定位元素 安装 pip install lxml利用 pip 安装即可 XPath 语法 XPath 是一门在 XML 文档中查找信息的语言。XPath 可用来在 XML 文档中对元素和属性进行遍历。XPath 是 W3C XSLT 标准的主要元素并且 XQuery 和 XPointer 都构建于 XPath 表达之上。 节点关系 1父Parent 每个元素以及属性都有一个父。 在下面的例子中book 元素是 title、author、year 以及 price 元素的父 booktitleHarry Potter/titleauthorJ K. Rowling/authoryear2005/yearprice29.99/price /book2子Children 元素节点可有零个、一个或多个子。 在下面的例子中title、author、year 以及 price 元素都是 book 元素的子 booktitleHarry Potter/titleauthorJ K. Rowling/authoryear2005/yearprice29.99/price /book3同胞Sibling 拥有相同的父的节点 在下面的例子中title、author、year 以及 price 元素都是同胞 booktitleHarry Potter/titleauthorJ K. Rowling/authoryear2005/yearprice29.99/price /book4先辈Ancestor 某节点的父、父的父等等。 在下面的例子中title 元素的先辈是 book 元素和 bookstore 元素 bookstorebooktitleHarry Potter/titleauthorJ K. Rowling/authoryear2005/yearprice29.99/price /book## 5后代Descendant 某个节点的子子的子等等。 在下面的例子中bookstore 的后代是 book、title、author、year 以及 price 元素 bookstorebooktitleHarry Potter/titleauthorJ K. Rowling/authoryear2005/yearprice29.99/price /book/bookstore选取节点 XPath 使用路径表达式在 XML 文档中选取节点。节点是通过沿着路径或者 step 来选取的。 下面列出了最有用的路径表达式 表达式描述nodename选取此节点的所有子节点。/从根节点选取。//从匹配选择的当前节点选择文档中的节点而不考虑它们的位置。.选取当前节点。..选取当前节点的父节点。选取属性。 实例 在下面的表格中我们已列出了一些路径表达式以及表达式的结果 路径表达式结果bookstore选取 bookstore 元素的所有子节点。/bookstore选取根元素 bookstore。注释假如路径起始于正斜杠 (/)则此路径始终代表到某元素的绝对路径bookstore/book选取属于 bookstore 的子元素的所有 book 元素。//book选取所有 book 子元素而不管它们在文档中的位置。bookstore//book选择属于 bookstore 元素的后代的所有 book 元素而不管它们位于 bookstore 之下的什么位置。//lang选取名为 lang 的所有属性。 谓语Predicates 谓语用来查找某个特定的节点或者包含某个指定的值的节点。 谓语被嵌在方括号中。 实例 在下面的表格中我们列出了带有谓语的一些路径表达式以及表达式的结果 路径表达式结果/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’]选取所有 title 元素且这些元素拥有值为 eng 的 lang 属性。/bookstore/book[price35.00]选取 bookstore 元素的所有 book 元素且其中的 price 元素的值须大于 35.00。/bookstore/book[price35.00]/title选取 bookstore 元素中的 book 元素的所有 title 元素且其中的 price 元素的值须大于 35.00。 选取未知节点 XPath 通配符可用来选取未知的 XML 元素。 通配符描述*匹配任何元素节点。*匹配任何属性节点。node()匹配任何类型的节点。 实例 在下面的表格中我们列出了一些路径表达式以及这些表达式的结果 路径表达式结果/bookstore/*选取 bookstore 元素的所有子元素。//*选取文档中的所有元素。//title[*]选取所有带有属性的 title 元素。 选取若干路径 通过在路径表达式中使用 “|” 运算符您可以选取若干个路径。 实例 在下面的表格中我们列出了一些路径表达式以及这些表达式的结果 路径表达式结果//book/title | //book/price选取 book 元素的所有 title 和 price 元素。//title | //price选取文档中的所有 title 和 price 元素。/bookstore/book/title | //price选取属于 bookstore 元素的 book 元素的所有 title 元素以及文档中所有的 price 元素。 XPath 运算符 下面列出了可用在 XPath 表达式中的运算符 运算符描述实例返回值|计算两个节点集//book | //cd返回所有拥有 book 和 cd 元素的节点集加法6 410-减法6 - 42*乘法6 * 424div除法8 div 42等于price9.80如果 price 是 9.80则返回 true。如果 price 是 9.90则返回 false。!不等于price!9.80如果 price 是 9.90则返回 true。如果 price 是 9.80则返回 false。小于price9.80如果 price 是 9.00则返回 true。如果 price 是 9.90则返回 false。小于或等于price9.80如果 price 是 9.00则返回 true。如果 price 是 9.90则返回 false。大于price9.80如果 price 是 9.90则返回 true。如果 price 是 9.80则返回 false。大于或等于price9.80如果 price 是 9.90则返回 true。如果 price 是 9.70则返回 false。or或price9.80 or price9.70如果 price 是 9.80则返回 true。如果 price 是 9.50则返回 false。and与price9.00 and price9.90如果 price 是 9.80则返回 true。如果 price 是 8.50则返回 false。mod计算除法的余数5 mod 21 lxml 用法 初步使用 首先我们利用它来解析 HTML 代码先来一个小例子来感受一下它的基本用法。 from lxml import etree text 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 etree.tostring(html) print(result)首先我们使用 lxml 的 etree 库然后利用 etree.HTML 初始化然后我们将其打印出来。 其中这里体现了 lxml 的一个非常实用的功能就是自动修正 html 代码大家应该注意到了最后一个 li 标签其实我把尾标签删掉了是不闭合的。不过lxml 因为继承了 libxml2 的特性具有自动修正 HTML 代码的功能。 所以输出结果是这样的 htmlbody 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/li /ul/div/body/html不仅补全了 li 标签还添加了 bodyhtml 标签。 文件读取 除了直接读取字符串还支持从文件读取内容。比如我们新建一个文件叫做 hello.html内容为 divulli classitem-0a hreflink1.htmlfirst item/a/lili classitem-1a hreflink2.htmlsecond item/a/lili classitem-inactivea hreflink3.htmlspan classboldthird item/span/a/lili classitem-1a hreflink4.htmlfourth item/a/lili classitem-0a hreflink5.htmlfifth item/a/li/ul/div利用 parse 方法来读取文件。 from lxml import etree html etree.parse(hello.html) result etree.tostring(html, pretty_printTrue) print(result)同样可以得到相同的结果。 XPath 实例测试 依然以上一段程序为例 1获取所有的标签 from lxml import etree html etree.parse(hello.html) print type(html) result html.xpath(//li) print result print len(result) print type(result) print type(result[0]) 运行结果: type lxml.etree._Element [Element li at 0x25a5f48, Element li at 0x25a5f08, Element li at 0x25a50c8, Element li at 0x259f788, Element li at 0x259f148] 5 type list type lxml.etree._Element可见etree.parse 的类型是 ElementTree通过调用 xpath 以后得到了一个列表包含了 5 个元素每个元素都是 Element 类型 2获取标签的所有 class result html.xpath(//li/class) print result[item-0, item-1, item-inactive, item-1, item-0]3获取标签下 href 为 link1.html 的 标签 result html.xpath(//li/a[hreflink1.html]) print result[Element a at 0x2615f48]4获取标签下的所有标签 注意这么写是不对的 result html.xpath(//li/span)因为 / 是用来获取子元素的而 并不是标签下的所有元素所以要用双斜杠 result html.xpath(//li//span) print result[Element span at 0x25a5f08]5获取标签下的所有 class属性值不包括标签 result html.xpath(//li/a//class) print result[blod]6获取最后一个li标签的子a标签的href属性值 result html.xpath(//li[last()]/a/href) print result[link5.html]7获取倒数第二个元素的子标签内容 result html.xpath(//li[last()-1]/a) print result[0].textfourth item8获取 class 为 bold 的标签名 result html.xpath(//*[classbold]) print result[0].tagspan通过以上实例的练习相信大家对 XPath 的基本用法有了基本的了解。也可以利用 text 方法来获取元素的内容。 大家多加练习 结语 XPath 是一个非常好用的解析方法同时也作为爬虫学习的基础在后面的 selenium 以及 scrapy 框架中都会涉及到这部分知识希望大家可以把它的语法掌握清楚为后面的深入研究做好铺垫。
http://www.zqtcl.cn/news/315415/

相关文章:

  • 网站免费正能量小说台州百度关键词优化
  • 保定自助建站做静态网站
  • 旅游网站对比模板免费招收手游代理
  • phpstudy网站建设教程wordpress破解管理员帐号
  • 商务网站规划与建设心得北京小程序制作首选华网天下
  • 果洛电子商务网站建设多少钱公司网站建设选什么服务器
  • 莱芜做网站公司网站建设表单教案
  • 建设酒类产品网站的好处遵义网站制作费用
  • 高端网站设计价格wordpress登录下载附件
  • 国内有名的网站设计公司wordpress缓存插件比拼
  • 网站的建设和推广直播营销策划方案范文
  • 做购物平台网站 民治百度导航地图下载
  • 东莞市主营网站建设服务机构青岛建站公司电话
  • 做网站技术wordpress漂亮手机网站模板下载
  • 网站怎么更新网页内容网络推广怎么找客户
  • 如何编写网站建设销售的心得适合装饰公司的名字
  • 有什么免费建网站网站pr查询
  • flash+xml网站模板简述网站制作的一般流程
  • 成都私人做网站建设怎么切页面做网站
  • 聊城做网站的公司论坛外链代发
  • 廊坊企业自助建站网站框架设计好后怎么做
  • 手机网站建设效果wordpress 目录改变
  • 做商城网站的项目背景图片c2750服务器做网站行吗
  • 北京市专业网站建设wordpress视频站
  • 知名网站制作公南充建设机械网站
  • 网站建设实践鉴定微商小程序制作
  • 盗用别人网站图做网站快速排名优化推广手机
  • 安徽网站建设服务平台wordpress自定义统计
  • 微网站开发方案模板建站宝盒哪个牌子好
  • 低价做网站网站制作天津