一、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. Android5.x新特性之 Toolbar和Theme的使用

    Toolbar 你还在为Android 的ActionBar的文字不能随意设置位置而烦恼么?你还在为ActionBar不能自定义添加自己的布局而烦恼么?现在告诉你一个好消息,当你看到这篇文章时,就不必 ...

  2. mybatis 之 resultType="HashMap" parameterType="list"

    public ServiceMessage<List<Map<String, Object>>> queryGoodsStockInfo(List<Long& ...

  3. 深入浅出MFC——MFC多线程程序设计(七)

    1. 从操作系统层面看线程——三个观念:模块(MDB).进程(PDB).线程(TDB) 2. “执行事实”发生在线程身上,而不在进程身上.也就是说,CPU调度单位是线程而非进程.调度器据以排序的,是每 ...

  4. thrift安装及使用

    下载Thrift:http://thrift.apache.org/download ■ 将thrift-0.11.0.exe重命名为thrift.exe: ■ 解压thrift-0.11.0.tar ...

  5. 微信小程序学习指南

    作者:初雪链接:https://www.zhihu.com/question/50907897/answer/128494332来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ...

  6. MFC 常见问题

    一 常见变量获得 CDC * cDc=GetDC(); HDC m_Screenhdc = this->GetDC()->m_hDC; //  整个窗口客户区的坐标 this->Ge ...

  7. spring boot 单元测试,如何使用profile

    一.问题概述 spring boot项目.单元测试的时候,我发现,总是会使用application.properties的内容,而该文件里,一般是我的开发时候的配置. 比如上图中,dev是开发配置,p ...

  8. shell脚本技巧记录

    2014/4/9 shell脚本变量处理: ${varible##*string} //从左向右截取最后一个string后的字符串 ${varible#*string} //从左向右截取第一个stri ...

  9. matlab 获取网卡MAC地址

    输入命令 [sta,MACres] =  dos('getmac'); 其中MACres 存储的信息即为网卡的 相关信息. 如果想判断读取的网卡信息是否有指定信息可以如下输入 USER1 = strf ...

  10. Python2.7设置在shell脚本中自动补全功能的方法

    1.新建tab.py文件 #!/usr/bin/env python # python startup file import sys import readline import rlcomplet ...