一、xpath提取内容

1、提取节点中最表层的文本

htmlobj.xpath("./text()")

在scrapy中用extract()[0]方法抽取文本。如:

temp['title'] = node.xpath('./text()').extract()[0].strip()
temp['title_url'] = node.xpath('./@href').extract()[0]

python中用到extract一般会是scrapy中获取meta内容。

2、提取节点中多嵌套的文本

htmlobj.xpath("string(.)").strip()

from lxml import etree
# 获取全部有意义正文文本
html_str="""<div>hah<a>六六六</a>cccc收拾收拾</div>"""
html_etree = etree.HTML(html_str) # 获取element 类型的html
all_content = html_etree.xpath('string(.)').strip()
print(all_content)

  

遇到gbk编码问题解决方案:

print(all_content.encode('gbk', 'ignore').decode('gbk'))

原文:https://www.jb51.net/article/143722.htm

输出:

hah六六六cccc收拾收拾

3、提取节点中属性的值

htmlobj.xpath("./@href")

<div class="item item-btn">
<input type="hidden" name="type" value="ML" />
</div>

html_str = response.content.decode()
html_etree = etree.HTML(html_str) # 获取element 类型的html
all_content = html_etree.xpath("//div[@class='item item-btn']//input[@name='type']/@value")
print(all_content)

  

输出:

['PL', 'ML']

二、xpath谓语的其他使用

xpath定位中starts-with、contains和text()的用法

1、starts-with

顾名思义,匹配一个属性开始位置的关键字

//input[starts-with(@name,'name1')] 查找name属性中开始位置包含'name1'关键字的页面元素

2、contains

匹配一个属性值中包含的字符串

//input[contains(@name,'na')] 查找name属性中包含na关键字的页面元素

3、text()

匹配的是显示文本信息,此处也可以用来做定位用

<a href="http://www.baidu.com">百度搜索</a>

xpath写法为 //a[text()='百度搜索']

或者 //a[contains(text(),"百度搜索")]

参考:

http://blog.csdn.net/zhouxuan623/article/details/43935039

3、注意
如果有tbody标签,要省去tbody及之前的路径,写成相对路径

xpath教程 3 - xpath的小结的更多相关文章

  1. xpath教程 2 - lxml库

    xpath教程 2 - lxml库 这些就是XPath的语法内容,在运用到Python抓取时要先转换为xml. lxml库 lxml 是 一个HTML/XML的解析器,主要的功能是如何解析和提取 HT ...

  2. xpath教程 1 - 什么是XPath

    xpath教程 1 什么是XPath? XPath (XML Path Language) 是一门在 XML 文档中查找信息的语言,可用来在 XML 文档中对元素和属性进行遍历. W3School官方 ...

  3. 雷林鹏分享:Ruby XML, XSLT 和 XPath 教程

    Ruby XML, XSLT 和 XPath 教程 什么是 XML ? XML 指可扩展标记语言(eXtensible Markup Language). 可扩展标记语言,标准通用标记语言的子集,一种 ...

  4. xpath教程三---逐层检索和全局检索

    本节主要介绍用xpath来描述html的层级关系 主要使用到的知识点如下: 单独的一个点 .,表示当前位置 两个点 ..,表示上一级父标签的位置 单独的一个斜杠 /,表示只检索下面一级 单独的两个斜杠 ...

  5. xpath教程二 ---- 通过ID和Class检索

    必备知识点 在html中,id是唯一的 在html中,class是可以多处引用的 工具 Python3版本 lxml库[优点是解析快] HTML代码块[从网络中获取或者自己杜撰一个] requests ...

  6. xpath教程一---简单的标签搜索

    工具 Python3版本 lxml库[优点是解析快] HTML代码块[从网络中获取或者自己杜撰一个] requests[推荐安装,从网页上获取网页代码练手,再好不过了] 讲解 网页代码都是成对的标签, ...

  7. XPath教程

    XPath 简介 XPath 是一门在 XML 文档中查找信息的语言.XPath 可用来在 XML 文档中对元素和属性进行遍历. XPath 是 W3C XSLT 标准的主要元素,并且 XQuery ...

  8. jsoup、xpath教程

    一.jsoup 1.使用JSOUP处理HTML文档 2.使用 jsoup 对 HTML 文档进行解析和操作 3.jsoup开发指南,jsoup中文使用手册,jsoup中文文档 二.xpath 1.XP ...

  9. Spider-Python爬虫之XPath 教程

    原文链接:https://www.runoob.com/xpath/xpath-syntax.html XPath 术语 XPath 节点 七种类型:在 XPath 中,有七种类型的节点:元素.属性. ...

随机推荐

  1. 如何使用 SSH 连接 VMWare 虚拟机中的 Ubuntu

    环境:VMWare Player 5.0.2,Ubuntu 13.10  VMWare共有3种网络连接模式,分别是: 1. bridged(桥接模式):虚拟机将直接连接到物理局域网,使自身独立于宿主机 ...

  2. C#实现新建文件并写入内容

    using System; using System.IO; namespace ConsoleApplication1 { class Program { static void Main(stri ...

  3. 【贪心】PAT 1033. To Fill or Not to Fill (25)

    1033. To Fill or Not to Fill (25) 时间限制 10 ms 内存限制 32000 kB 代码长度限制 16000 B 判题程序 Standard 作者 ZHANG, Gu ...

  4. JavaScript 闭包(Closure)

    闭包(closure)是掌握Javascript从人门到深入一个非常重要的门槛,它是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现. 闭包-无处不在  在前端编程中,使 ...

  5. ldap 配置过程详解

    ldap常用名称解释 1.环境搭建 操作系统:centos6.5 x86_64关闭防火墙.selinux开启时间同步# crontab -e加入# time sync*/5 * * * * /usr/ ...

  6. 如何防御mimikatz致敬Mimikatz攻防杂谈学习笔记

    零.绪论:mimikatz简介 mimikatz是一款出色的内网渗透工具,可以抓取windows主机的明文密码.NTLMhash值或者kerberos对应的缓存凭据.mimikatz的使用在获取权限后 ...

  7. 记录一下使用Ubuntu16.0.4配置和使用docker registry

    h1, h2, h3, h4, h5, h6, p, blockquote { margin: 5px; padding: 5; } body { font-family: "Helveti ...

  8. 为什么局域网里有ip为10.10.10.1

    10.0.0.1 是私有地址,用来给局域网络分配主机地址的. A类地址 (1)A类地址第1字节为网络地址,其它3个字节为主机地址.它的第1个字节的第一位固定为0. (2)A类地址网络号范围:1.0.0 ...

  9. 【CF316G3】Good Substrings 后缀自动机

    [CF316G3]Good Substrings 题意:给出n个限制(p,l,r),我们称一个字符串满足一个限制当且仅当这个字符串在p中的出现次数在[l,r]之间.现在想问你S的所有本质不同的子串中, ...

  10. PHPStorm 注册码&主题皮肤

    JetBrains PhpStorm 注册方法: 用浏览器打开 http://idea.lanyus.com/ 点击页面中的“获得注册码” 然后打开PhpStorm,在注册时切换至Activation ...