Xpath解析
import requests
from lxml import etree
url = 'https://www.huawei.com/cn/?ic_medium=direct&ic_source=surlent'
response = requests.get(url = url)
ht = response.text
tree = etree.HTML(ht)
#也可以解析本地文件
#tree = etree.parse(文件名)
- ‘//’表示若干层(包括一层)嵌套下, ‘/’表示一层嵌套。
- 索引从1开始。
- 以标签结束,则返回元素为内存地址的一个列表。
- 取文本:
/text()取属性:/@attr 例如:/@href - 多重限定条件
a [@href="xxx" and @class = "xxx"] - 模糊匹配
div[contains(@class,'xx')]匹配类名中含有‘xx'的div标签 div[starts-with(@class,'xx')]匹配类名以‘xx'开始的div标签- "|"表示或
//img[@class= 'icon-image']/@alt | //img[@class= 'icon-image']/@src - "*“ 表示所有,例如:
// *[@class = 'xxx']匹配所有类名为‘xxx'标签
print(tree.xpath('//div[@class="col-sm-4 external-link"]//p'))
#[<Element p at 0x38dc350>, <Element p at 0x38dc800>, <Element p at 0x38dc828>, <Element p at 0x38dc850>, <Element p at 0x38c6e18>, <Element p at 0x38c6dc8>]
#取文本
print(tree.xpath('//div[@class="col-sm-4 external-link"]//p/text()'))
#['手机', '笔记本', '平板', '穿戴 ', '配件', '智能家居']
print(tree.xpath('//div[@class="col-sm-4 external-link"][1]//p/text()'))
#['手机']
#取属性
print(tree.xpath('//div[@class="col-sm-4 external-link"]/a/@href'))
#多重限定条件
print(tree.xpath('//a[@href="javascript:;" and @class = "navbar-toggle "] /text()'))
#
['\r\n 手机、笔记本&平板...\r\n ', '\r\n 解决方案&服务\r\n ']
#模糊匹配
print(tree.xpath('//div[starts-with(@id,"hw1_g")] //span//text()'))
#['前往 ', 'consumer.huawei.com', ' 查看全部产品', '访问 ', '技术支持中心', '前往 ', 'e.huawei.com', ' 查看全部企业业务', '前往', '技术支持中心', '前往 ', 'carrier.huawei.com', ' 查看全部运营商业务', '前往', '技术支持中心', '查看全部华为云服务', 'www.huaweicloud.com', '前往 ', '帮助中心']
# |
url = 'https://www.coolapk.com/'
response = requests.get(url = url)
ht = response.text
tree = etree.HTML(ht)
print(tree.xpath("//img[@class= 'icon-image']/@alt | //img[@class= 'icon-image']/@src"))
['/static/images/app_icon.png', '应用游戏', '/static/images/huati_icon.png', '话题', '/static/images/kutu_icon.png', '酷图', '/static/images/wode_icon.png', '我的', '/static/images/zhibo_icon.png', '应用吧', '/static/images/shoujiba_icon.png', '手机吧', '/static/images/kankanhao_icon.png', '看看号', '/static/images/shoucangjia_icon.png', '收藏单', '/static/images/yingyongji_icon.png', '应用集', '/static/images/shiyanshi_icon.png', '实验室', '/static/images/zidingyi_icon.png', '自定义设置', '/static/images/houtaichunjing_icon.png', '后台纯净', '/static/images/kaifazhe_icon.png', '开发者平台', '/static/images/shipinbofang_icon.png', '微发现', '/static/images/android_white.png', '安卓下载', '/static/images/iphone_white.png', 'iPhone下载', '/static/images/android_white.png', 'Android下载', '/static/images/iphone_white.png', 'iPhone下载']
Xpath解析的更多相关文章
- JAVA通过XPath解析XML性能比较(原创)
(转载请标明原文地址) 最近在做一个小项目,使用到XML文件解析技术,通过对该技术的了解和使用,总结了以下内容. 1 XML文件解析的4种方法 通常解析XML文件有四种经典的方法.基本的解析方式有两种 ...
- 利用XPath解析带有xmlns的XML文件
在.net中,编写读取xml 的程序中提示"未将对象引用设置到对象的实例",当时一看觉得有点奇怪.为什么在读取xml数据的时候也要实例化一个对象.google了才知道,xml文件中 ...
- 爬虫系列二(数据清洗--->xpath解析数据)
一 xpath介绍 XPath 是一门在 XML 文档中查找信息的语言.XPath 用于在 XML 文档中通过元素和属性进行导航. XPath 使用路径表达式在 XML 文档中进行导航 XPath 包 ...
- python开发遇到的坑(1)xpath解析ValueError: Unicode strings with encoding declaration are not supported
Traceback (most recent call last): File "/Users/*******.py", line 37, in <module> Bt ...
- xpath解析数据
xpath解析数据 """ xpath 也是一种用于解析xml文档数据的方式 xml path w3c xpath搜索用法 在 XPath 中,有七种类型的节点:元素.属 ...
- xpath 解析 及案例
xpath解析 编码流程: 1.实例化一个etree对象,且将页面源码加载到该对象中 2.使用xpath函数,且在函数中必须作用一个xpath表达式进行标签的定位 3.使用xpath进行属性和文本的提 ...
- Scrapy基础(六)————Scrapy爬取伯乐在线一通过css和xpath解析文章字段
上次我们介绍了scrapy的安装和加入debug的main文件,这次重要介绍创建的爬虫的基本爬取有用信息 通过命令(这篇博文)创建了jobbole这个爬虫,并且生成了jobbole.py这个文件,又写 ...
- @1-4使用Xpath解析豆瓣短评
使用Xpath解析豆瓣短评 Python爬虫(入门+进阶) DC学院 本节课程主要介绍解析神器Xpath是什么.Xpath如何安装及使用,以及使用实际的例子讲解Xpath如何解析豆瓣短评的网页 ...
- JAVA通过XPath解析XML性能比较
转自[http://www.cnblogs.com/mouse-coder/p/3451243.html] 最近在做一个小项目,使用到XML文件解析技术,通过对该技术的了解和使用,总结了以下内容. 1 ...
- BeautifulSoup与Xpath解析库总结
一.BeautifulSoup解析库 1.快速开始 html_doc = """ <html><head><title>The Dor ...
随机推荐
- gradle的简单使用
Gradle是一个基于JVM的构建工具,是一款通用灵活的构建工具,支持maven, Ivy仓库,支持传递性依赖管理,而不需要远程仓库或者是pom.xml和ivy.xml配置文件,基于Groovy,bu ...
- mysql的select语句
参考: https://www.cnblogs.com/xiaoshen666/p/10824117.html https://www.cnblogs.com/zouwangblog/archive/ ...
- These dependencies were not found: *!!vue-style-loader!css-loader?
在vue中使用less首先要下载依赖:npm install less less-loader --save-dev 下载好之后就可以.vue文件中使用lang="less"和@i ...
- oracle数据库的存储原理
表空间,oracle逻缉存储结构,表空间下包含一个或者多个物理的文件存储.所有用户对象存放在表空间中.与系统有关的对象存放在系统表空间中. 数据库的作用就是实现对数据的管理和查询.任何一个数据库系统, ...
- Java打印素数(质数)
要求:打印 2 - 100000 当中的素数与非素数.(素数定义:在大于1的自然数中,除了1和它本身以外不再有其他因数) 1. 常规方式——对正整数n,如果用2到 之间的所有整数去除,均无法整除,则 ...
- Java 签名(SHA1WithRSA、SHA256WithRSA、SHA256withECDSA)
RSA1.RSA256 签名 public static String MakeSign(String Data) { try { byte[] data = Data.getBytes(); byt ...
- 【Oracle/Java】以Insert ALL方式向表中插入百万条记录,耗时9分17秒
由于按一千条一插程序长期无反应,之后改为百条一插方式,运行完发现插入百万记录需要9m17s,虽然比MySQL效率差,但比单条插入已经好不少了. 对Oracle的批量插入语法不明的请参考:https:/ ...
- DevOps时代的软件过程改进探讨 杨振涛 云加社区 今天 作者:杨振涛,腾讯云TVP 本文从Jenkins,DevOps,云原生等视角探讨了软件过程改进在各个时代的挑战和价值,重新审视了SPI在软件开发和交付的效率和质量提升方面的意义
DevOps时代的软件过程改进探讨 杨振涛 云加社区 今天 作者:杨振涛,腾讯云TVP 本文从Jenkins,DevOps,云原生等视角探讨了软件过程改进在各个时代的挑战和价值,重新审视了SPI在软件 ...
- JMeter学习-参数化
JMeter也有像LR中的参数化,本篇就来介绍下JMeter的参数化如何去实现. 参数化:录制脚本中有登录操作,需要输入用户名和密码,假如系统不允许相同的用户名和密码同时登录,或者想更好的模拟多个用户 ...
- python 混入类MixIn
写在前面 能把一件事情说的那么清楚明白,感谢廖雪峰的官方网站. 1.为什么要用混入类?(小白入门) 继承是面向对象编程的一个重要的方式,因为通过继承,子类就可以扩展父类的功能. step1: 回忆一下 ...