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

网站制作公做网站如何购买服务器

网站制作公,做网站如何购买服务器,如何看一个关键词在某个网站是否被百度收录,湖南企业网站建设Python之lxml模块的使用#xff1a;1. 认识lxml2. lxml中基本使用2.1 安装并导入lxml模块2.2 节点操作#xff1a;2.3 属性操作#xff1a;2.4 文本操作2.5 xml文件解析与序列化2.6 lxml命名空间的处理3. 使用lxml解析xml案例4. 使用lxml生成一个xml文件案例#xff1a;5. … Python之lxml模块的使用1. 认识lxml2. lxml中基本使用2.1 安装并导入lxml模块2.2 节点操作2.3 属性操作2.4 文本操作2.5 xml文件解析与序列化2.6 lxml命名空间的处理3. 使用lxml解析xml案例4. 使用lxml生成一个xml文件案例5. 补充xPath语法5.1 节点选择语法5.2 节点修饰语法5.3 谷歌浏览器xpath helper插件的安装和使用1. 认识lxml lxml是一款高性能的Python XML库主要用来解析及生成xml和html文件解析、序列化、转换。其天生支持Xpath1.0、XSLT1.0、定制元素类甚至 python 风格的数据绑定接口。lxml基于Cpython实现其底层是libxml2和libxslt两个C语言库。因此具有较高的性能。 官方文档https://lxml.de/ 2. lxml中基本使用 在lxml中lxml.etree模块是最常用的HTML、XML文档解析模块。其中lxml.etree.Element是处理xml的一个核心类Element对象可以直观的理解为是XML中的节点。使用Element类可以实现对XML节点、节点属性、节点内文本的操作。 2.1 安装并导入lxml模块 pip install lxmlfrom lxml import etree2.2 节点操作 1.创建节点创建Element对象 root etrre.Element(root) print(root)2.获取节点名称 print(root.tag)3.添加子节点 添加子节点的方法有三种1、直接使用SubElement方法添加子节点。2、创建一个Element对象使用append的方法将该对象追加到父节点中。3、创建一个Element对象使用insert方法将对象添加到父节点指定位置。 使用SubElement方法添加 child_sub etree.SubElement(root, child_sub)使用append方法添加 child_append etree.Element(child_append) root.append(child_append)使用insert方法添加 child_insert etree.Element(child_insert) root.insert(0, child_append) # 第一个参数为添加的位置第二个参数为添加的Element对象4.删除子节点 可以使用remove()方法来删除指定子节点。使用clear()方法来清空所有子节点 root.remove(child_sub) # 删除名字为child_sub节点 root.clear() # 清空root的所有子节点5.访问节点 在Element对象中访问节点的方法有多种。 可以通过列表的方式来方位节点。可以通过getparent()等方法来访问节点。可以通过xpath语法来定位指定节点(暂不介绍) (1) 通过列表的方式来访问节点 child_sub root[0] # 通过下标来访问子节点 child_sub root[0: 1][0] # 通过切片的方式来访问节点 for c in root: # 通过遍历来获取所有节点print(c.tag)c_append_index root.index(child_append) # 获取节点的索引 print(len(root)) # 获取子节点的数量(2) 通过方法来访问节点 获取父节点getarent()获取所有子节点getchildren()获取根节点getroot()findall()返回所有匹配的元素返回列表find()返回匹配到的第一个元素 print(child_sub.getparent().tag) # 查询父节点 print(root.getchildren()) # 查询所有子节点 print(root.getroot()) # 获取根节点 print(root.find(b)) # 查询第一个b标签 print(root.findall(.//b)) # 查询所有b标签2.3 属性操作 在Element中节点的属性是以字典的形式存储的。 创建属性 创建属性的方式有两种。1、在创建节点的时候创建属性。2、使用set()方法创建属性。 root etree.Element(root, language中文) # 创建节点时创建属性root.set(hello, python) # 使用set方法为root节点添加属性获取属性 print(root.get(language)) # 使用get方法获取属性 print(root[language]) print(root.keys()) print(root.values()) print(root.items())修改属性 root[language] English2.4 文本操作 在lxml中访问xml文本的方式有多种可以使用text、tail属性的方式访问文本。也可以使用xpath语法访问文本。这里只介绍使用text和tail获取和设置文本的属性的方法。xpath后面会具体介绍。 text和tail属性 的区别 xml中标签一般是成对出现的。但在HTML中则可能会出现单标签如htmlbodytextbr/tail/body/html。 text属性用于成对便签的读取和设置tail属性用于单一标签的读取和设置 html etree.Element(html) body etree.SubElement(html, body) body.text text # 给body标签内写入text文本内容br etree.SubElement(body, br) br.tail tail # 在br标签中写入tail文本内容 2.5 xml文件解析与序列化 1. xml文件解析的方法 xml文件解析的方法有多种常用的有fromstring、XML、HTML、parse。其中XML和HTML的参数既可以是字符串、也可以是二进制的字节码。 fromstring、XML、parse返回的是一个Element对象是一个节点。主要用于解析文档碎片。 parse() 返回值是一个ElementTree类型的对象完整的xml树结构。parse主要用来解析完整的文档而不是Element对象。 参数 打开的文件或文件类型对象建议以二进制形式打开 文件名或字符串 HTTP或者FTP的url。 注意从文件名或者url解析通常比从文件对象解析要快。 xml_data rootdata/root# fromstring root_str etree.formstring(xml_data) print(root_str.tag)# XML root_xml etree.XML(xml_data) print(root_xml.tag)# HTML如果没有html和body标签则会自动补上root_html etree.HTML(xml_data)print(root_html.tag)# parse中的参数应该是一个完整的xml或html,同样返回值是一个ElementTree类型的对象完整的xml树结构。parse主要用来解析完整的文档。 tree etree.parse(text) #文件解析成元素树 root tree.getroot() #获取元素树的根节点 print etree.tostring(root, pretty_printTrue)2. xml文件序列化的方法 我们在生成一个xml文件是有两种方式1、将Element对象转换成一个xml字符串然后将其写入到文件中。2、使用ElementTreee对象中的write()方法直接将xml写入文件。 root rootdata/root# 将Element对象转换成xml字符串写入文件 root_str element.tostring(root, pretty_printTrue, xml_declartionTrue, encodingutf-8) with open(text.xml, w, encodingutf-8) as f:f.write(root_str)# 将节点Element对象转为ElementTree对象。 tree etree.ElementTree(root) tree.write(text.xml, pretty_printTrue, xml_declartionTrue, encodingutf-8)参数含义 第一个参数是xml保持的路径包括文件名pretty_print是否格式化xml(美化)xml_declaration是否写入xml声明就是xml中开头第一行文字。encoding编码格式 补充ElementTree对象可理解为一个完整的XML树每个节点都是一个Element对象。而ElementPath则相当于XML中的XPath。用于搜索和定位Element元素。 2.6 lxml命名空间的处理 什么是命名空间https://www.w3school.com.cn/xml/xml_namespaces.asp 带有命名空间的xml解析处理 from lxml import etreestr_xml A xmlnshttp://This/is/a/namespaceBdataB1/BBdataB2/BBCdatac/C/B /A xml etree.fromstring(str_xml) # 解析字符串 ns xml.nsmap # 获取命名空间 print(ns) print(ns[None]) {None: http://This/is/a/namespace}http://This/is/a/namespacens xml.nsmap[None] # 获取命名空间xmlns# 1. 使用findall方法查找指定节点。 for item in xml.findall(f{ns}b)print(item.text)# 2. 使用xpath语法加命名空间查找指定节点 ns {x:root.nsmap[None]} # 获取命名空间 b root.xpath(//x:B, namespacesns) print(b)C root.xapth(//x:B/X:C, namespacesns) print(c)注意当xml携带有命名空间xmlns的时候在查找节点时每一级节点都需要加上命名空间。如果不携带命名空间是无法查询到该节点的。 除此之外处理命名空间还有一个非常shao的方法即将所有的命名空间都替换为空将其当成普通的节点进行处理。 参考https://blog.csdn.net/rhx_qiuzhi/article/details/105345624 3. 使用lxml解析xml案例 1导入lxml 的 etree 库 from lxml import etree2利用etree.HTML将html字符串bytes类型或str类型转化为Element对象Element对象具有xpath的方法返回结果的列表 html etree.HTML(text) ret_list html.xpath(xpath语法规则字符串)3xpath方法返回列表的三种情况 返回空列表根据xpath语法规则字符串没有定位到任何元素返回由字符串构成的列表xpath字符串规则匹配的一定是文本内容或某属性的值返回由Element对象构成的列表xpath规则字符串匹配的是标签列表中的Element对象可以继续进行xpath from lxml import etree text divulli classitem-1a 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 /div html etree.HTML(text) # 也可以使用XML和fromstring方法# 获取所有的class属性为item-1的href属性 href_list html.xpath(//li[classitem-1]/a/href) # 获取所有的class属性为item-1的text内容 text_list html.xpath(//li[classitem-1]/a/text())# 组装成字典 for href, title in zip(href_list, title_list):print({f{href}: f{title}})注意lxml.etree.HTML(html_str)方法可以自动补全不完整的标签。 4. 使用lxml生成一个xml文件案例 from lxml import etree# 创建element对象 root etree.Element(root) print(root.tag)# 添加子节点 child_sub etree.SubElement(root, child_sub)child etree.Element(child) child_append root.append(child) # 通过append向root节点里面追加子节点 child_insert root.insert(0, child) # 通过insert向root节点开始的位置添加子节点# 3.删除子节点 # root.remove(child2)# 4.删除所有子节点 # root.clear()# 5.以列表的方式操作子节点 print(len(root)) print root.index(child) # 索引号# 6.生成xml字符串写入xml文件 # 将Element对象转换成xml字符串写入文件 root_str etree.tostring(root, pretty_printTrue, xml_declarationTrue, encodingutf-8) with open(text.xml, wb) as f:f.write(root_str)# 将节点Element对象转为ElementTree对象。 tree etree.ElementTree(root) tree.write(text.xml, pretty_printTrue, xml_declartionTrue, encodingutf-8)参考链接https://blog.csdn.net/ydw_ydw/article/details/82227699 5. 补充xPath语法 XPath (XML Path Language) 是一门在 HTML\XML 文档中查找信息的语言可用来在 HTML\XML文档中对元素和属性进行遍历。W3School官方文档http://www.w3school.com.cn/xpath/index.asp提取xml、html中的数据一般需要将lxml模块和xpath语法配合使用 5.1 节点选择语法 xpath定位节点以及提取属性或文本内容的语法 表达式描述nodename选中该元素。/从根节点选取、或者是元素和元素间的过渡。//从匹配选择的当前节点选择文档中的节点而不考虑它们的位置。.选取当前节点。..选取当前节点的父节点。选取属性。text()选取文本。 注意符号出现在末尾时用来提取属性出现在[]中时是用来匹配属性 选取未知节点的语法 可以通过通配符来选取未知的html、xml的元素 通配符描述*匹配任何元素节点。node()匹配任何类型的节点。 全部的标签//*全部的属性//node() 5.2 节点修饰语法 可以根据标签的属性值、下标等来获取特定的节点 路径表达式结果//title[lang“eng”]选择lang属性值为eng的所有title元素/bookstore/book[1]选取属于 bookstore 子元素的第一个 book 元素。/bookstore/book[last()]选取属于 bookstore 子元素的最后一个 book 元素。/bookstore/book[last()-1]选取属于 bookstore 子元素的倒数第二个 book 元素。/bookstore/book[position()1]选择bookstore下面的book元素从第二个开始选择//book/title[text()‘Harry Potter’]选择所有book下的title元素仅仅选择文本为Harry Potter的title元素//book/title[contains(text(), “Harry”)]选择所有book下的文本包含Harry的title元素/bookstore/book[price35.00]/title选取 bookstore 元素中的 book 元素的所有 title 元素且其中的 price 元素的值须大于 35.00。 关于xpath的下标 在xpath中第一个元素的位置是1最后一个元素的位置是last()倒数第二个是last()-1 5.3 谷歌浏览器xpath helper插件的安装和使用 要想利用lxml模块提取数据需要我们掌握xpath语法规则。接下来我们就来了解一下xpath helper插件它可以帮助我们练习xpath语法。 xpath helper插件的安装: 1.下载Chrome插件 XPath Helper 可以在chrome应用商城进行下载如果无法下载也可以从下面的链接进行下载下载地址https://pan.baidu.com/s/1UM94dcwgus4SgECuoJ-Jcg 密码:337b 2.把文件的后缀名crx改为rar然后解压到同名文件夹中 3.把解压后的文件夹拖入到已经开启开发者模式的chrome浏览器扩展程序界面 4.重启浏览器后访问url之后在页面中点击xpath图标就可以使用了 5.如果是linux或macOS操作系统无需操作上述的步骤2直接将crx文件拖入已经开启开发者模式的chrome浏览器扩展程序界面
http://www.yutouwan.com/news/82523/

相关文章:

  • 网站建设论文3000字范文在线服务器代理
  • 婚庆公司网站怎么做怎么做网络推广方案
  • 免费主题网站郉台网站建设
  • 电子商务网站建设感想网站建设便宜公司
  • 网站群系统建设玉田网站制作
  • 建设网站是主营成本吗国外网络推广方法
  • 做网站延期交付了wordpress 代码样式
  • wordpress全站模板广东省自然资源厅厅长陈光荣简历
  • 长沙微网站接做名片的网站
  • 站长工具亚洲中文精品临汾建设局官方网站
  • 如何查网站的空间思源黑体 wordpress
  • 怎么做国外的网站推广重庆市建设厅官网
  • 宁波网站建设价格网站建设的域名续费
  • 贸易网站设计公司信息网站的建设
  • 设计兼职网站企业内部网站模板
  • 广州信息流推广公司优化网络搜索引擎
  • 诸暨有哪些制作网站公司国外的ps网站
  • .net网站制作医药公司网站建设备案
  • cloudflare做侵权网站青岛网站开发工资
  • 顺德精品网站建设网络营销推广的要点
  • 9夜夜做新郎网站东莞网络推广培训
  • ftp上传网站之后专业南京网站建设
  • 学做网站看什么唐山培训网站建设
  • 如皋做公司网站百度链接提交
  • 汕头站扩建什么时候完成免费的企业邮箱怎么申请
  • 榆林建设网站wordpress仿小米主题
  • 网站建设制作免费网站开发网站设计的标准
  • 外贸新品开发网站企业信息化管理平台
  • 第二章营销型网站建设测验安平网站建设
  • 帝国音乐网站怎么做数据表注册公司的条件和费用