非标准代码处理

from lxml import etree  #导入lxml 中erree模块
parser = etree.HTMLParser(encoding="utf-8") #解释器指定编码

tree = etree.parse("b.html", parser=parser)  #把解释器加到etree解释器
print(tree)  #打印节点
print(etree.tostring(tree, encoding="utf-8").decode("utf-8")) #类型解码:看到具体内容

常用功能
#1.获取子节点全部文本
result = tree.xpath('/html/body/ul/li/a/text()')
# / 从当前节点选取直接子节点
# text()方法获取节点中的文本
print(result)

#2.指定获取子节点某一个文本
result = tree.xpath('/html/body/ul/li[1]/a/text()')
#指定标签中某一个内容:li[1]:某一标签第一个内容(xpath是从一开始数数)
print(result)

#3.指定属性获取 内容
result = tree.xpath('/html/body/ol/li/a[@href="suiyue"]/text()')
# @ :指定标签属性 ;a[@href="suiyue"]/text():根据标签属性打印文本
print(result)

#4.相对查找,获取内容
ol_li_list = tree.xpath("/html/body/ol/li")
print(ol_li_list) #找到3个节点

for li in ol_li_list:
#循环,从每一个li提取文字信息
result = li.xpath("./a/text()") #从li继续寻找(相对查找)
# ./ :表示当前节点
print(result)
result = li.xpath("./a/@href") #/@+属性类型:我们就可以拿到这个标签里面某种属性的值
print(result)

#5.获取标签属性值
print(tree.xpath('/html/body/ul/li/a/@href'))
# a/@href: a标签属性href 所有的值

小技巧
# 利用谷歌浏览器:F12程序员,快速复制Xpath路劲
print(tree.xpath("/html/body/div[1]/text()"))

最新文章

  1. java int与integer的区别
  2. solr 日期查询格式
  3. PHP 开启短标签
  4. ODB 短板
  5. 正则表达式:根据逗号解析CSV并忽略引号内的逗号
  6. 【原创】leetCodeOj --- Word Ladder II 解题报告 (迄今为止最痛苦的一道题)
  7. javaCV图像处理之Frame、Mat和IplImage三者相互转换(使用openCV进行Mat和IplImage转换)
  8. Django源码学习 了解render与render_to_response
  9. 14.javaweb AJAX技术详解
  10. 【BZOJ4071】八邻旁之桥(线段树)
  11. PhpStorm服务激活
  12. 清理 zabbix 历史数据, 缩减 mysql 空间
  13. dataTable使用方法
  14. 【Qt】窗口居中显示
  15. Idea中如何将web项目打包成war包并放到tomcat中启动
  16. SimpleXML概述
  17. 如何设置C++崩溃时生成Dump文件
  18. keepalived openssl 报错
  19. 【BZOJ2588】Spoj 10628. Count on a tree 主席树+LCA
  20. iOS线程之——NSCondition

热门文章

  1. KU060板卡设计资料原理图第636篇:基于FMC的KU060高性能 PCIe 载板
  2. ES-DSL
  3. Java面向对象之类与对象的创建
  4. MySQL Workbench部分出错及可能解决方案
  5. Spring的AOP源码解析(二)
  6. maven学习记录:命令行查看本地仓库所在位置
  7. 用Nodemailer发个邮件不算难?
  8. 执行 dataX 数据同步命令
  9. 3月1日至3月2日——数据结构与算法分析阅读笔记,线性表,AI。
  10. wsl2 的安装与使用