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解析的更多相关文章

  1. JAVA通过XPath解析XML性能比较(原创)

    (转载请标明原文地址) 最近在做一个小项目,使用到XML文件解析技术,通过对该技术的了解和使用,总结了以下内容. 1 XML文件解析的4种方法 通常解析XML文件有四种经典的方法.基本的解析方式有两种 ...

  2. 利用XPath解析带有xmlns的XML文件

    在.net中,编写读取xml 的程序中提示"未将对象引用设置到对象的实例",当时一看觉得有点奇怪.为什么在读取xml数据的时候也要实例化一个对象.google了才知道,xml文件中 ...

  3. 爬虫系列二(数据清洗--->xpath解析数据)

    一 xpath介绍 XPath 是一门在 XML 文档中查找信息的语言.XPath 用于在 XML 文档中通过元素和属性进行导航. XPath 使用路径表达式在 XML 文档中进行导航 XPath 包 ...

  4. 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 ...

  5. xpath解析数据

    xpath解析数据 """ xpath 也是一种用于解析xml文档数据的方式 xml path w3c xpath搜索用法 在 XPath 中,有七种类型的节点:元素.属 ...

  6. xpath 解析 及案例

    xpath解析 编码流程: 1.实例化一个etree对象,且将页面源码加载到该对象中 2.使用xpath函数,且在函数中必须作用一个xpath表达式进行标签的定位 3.使用xpath进行属性和文本的提 ...

  7. Scrapy基础(六)————Scrapy爬取伯乐在线一通过css和xpath解析文章字段

    上次我们介绍了scrapy的安装和加入debug的main文件,这次重要介绍创建的爬虫的基本爬取有用信息 通过命令(这篇博文)创建了jobbole这个爬虫,并且生成了jobbole.py这个文件,又写 ...

  8. @1-4使用Xpath解析豆瓣短评

    使用Xpath解析豆瓣短评 Python爬虫(入门+进阶)     DC学院 本节课程主要介绍解析神器Xpath是什么.Xpath如何安装及使用,以及使用实际的例子讲解Xpath如何解析豆瓣短评的网页 ...

  9. JAVA通过XPath解析XML性能比较

    转自[http://www.cnblogs.com/mouse-coder/p/3451243.html] 最近在做一个小项目,使用到XML文件解析技术,通过对该技术的了解和使用,总结了以下内容. 1 ...

  10. BeautifulSoup与Xpath解析库总结

    一.BeautifulSoup解析库 1.快速开始 html_doc = """ <html><head><title>The Dor ...

随机推荐

  1. nodejs+supertest+mocha 接口测试环境搭建

    系统接口自动化测试 该框架用于对系统的接口自动化测试(nodejs+supertest+mocha)Homebrew 安装: ruby -e "$(curl -fsSL {+}https:/ ...

  2. Myeclipse10 安装 破解 激活(含安装包,激活软件 免费)

    参考博客: https://www.cnblogs.com/gzhnan/articles/9536275.html 注意 安装完成之后一定不要点 Launch Myeclipse 下载地址: htt ...

  3. 深度解读Facebook刚开源的beringei时序数据库——数据压缩delta of delta+充分利用内存以提高性能

    转自:https://yq.aliyun.com/topic/58?spm=5176.100239.blogcont69354.9.MLtp4T 摘要: Facebook最近开源了beringei时序 ...

  4. cross-env 使用方式

    cross-env能跨平台设置及使用环境变量 大多数情况下,在windows平台下使用类似于: NODE_ENV=production的命令行指令会卡住,windows平台与POSIX在使用命令行时有 ...

  5. chrome dev

    chrome://plugins 为什么无法打开? Chrome插件问答 2018-03-02 13:34     最后又很多网友在我们 chrome插件 网反应说chrome://plugins 无 ...

  6. sqlServer sa账号被锁定

    alter login sa with password = '123'  unlock, check_policy = off, check_expiration = off    一切搞定.. 1 ...

  7. 中间件 | mq消息队列解说

    消息队列 1.1 什么是消息队列 我们可以把消息队列比作是一个存放消息的容器,当我们需要使用消息的时候可以取出消息供自己使用.消息队列是分布式系统中重要的组件,使用消息队列主要是为了通过异步处理提高系 ...

  8. OpenJudge计算概论-整数的个数

    /*========================================================== 整数的个数 总时间限制: 1000ms 内存限制: 65536kB 描述 给定 ...

  9. finder文件夹字体大小能不能统一修改

  10. 阶段5 3.微服务项目【学成在线】_day16 Spring Security Oauth2_02-用户认证技术方案-单点登录

    2 用户认证技术方案 2.1 单点登录技术方案 分布式系统要实现单点登录,通常将认证系统独立抽取出来,并且将用户身份信息存储在单独的存储介质,比如: MySQL.Redis,考虑性能要求,通常存储在R ...