# xpath的使用
安装lxml
from lxml import etree
Selector = etree.HTML(网页代码)
Selector.xpath(一段神奇的代码) xpath的一般用法
//定位根节点
/表示往下层寻找
/text()提取文本内容
/@***提取属性 例: response.xpath('//ul[@id="useful"]/li/text()')
中括号[]表示限定ul的条件,这里表示id为useful的ul标签 xpath的特殊用法 第一种情况:以相同的字符开始的情况,提取以下三个内容难道要写三次?
解决方法:用starts-with(@属性名称,属性相同的部分)
举例:
<div id='test-1'>需要的内容1</div>
<div id='test-2'>需要的内容2</div>
<div id='test-fault'>需要的内容3</div>
方案:response.xpath("//div[starts-with(@id, 'test')]/text()") 第二种情况:标签套标签,下面的情况如何提取成一句完整的话?div套着的标签如何提取?
解决方法:string(.)
举例:
html = '''
<div id="class3">
我左青龙,
<span id='tiger'>
右白虎,
<ul>上朱雀,
<li>下玄武.</li>
</ul>
老牛在当中,
</span>
龙头在胸口.
</div>
'''
# 方案:
from lxml import etree
selector = etree.HTML(html)
data = selector.xpath('//div[@id="class3"]')[0]
info = data.xpath('string(.)')#实际上是去除了div中间的其他多余标签
print(info)
content2=info.replace('\n','').replace(' ','')#将换行与空格分别取代
print(content2) # 输出结果:我左青龙,右白虎,上朱雀,下玄武.老牛在当中,龙头在胸口.

xpath的一般用法与特殊用法的更多相关文章

  1. heckboxlist详细用法、checkboxlist用法、checkboxlist

    heckboxlist详细用法.checkboxlist用法.checkboxlist for (int i = 0; i < CheckBoxList1.Items.Count; i++) { ...

  2. Sybase:游标用法以及嵌套用法

    Sybase:游标用法以及嵌套用法 游标示例一: --Sybase游标示例一: create PROCEDURE DBA.p_proc_test() ON EXCEPTION RESUME begin ...

  3. Python爬虫利器三之Xpath语法与lxml库的用法

    前面我们介绍了 BeautifulSoup 的用法,这个已经是非常强大的库了,不过还有一些比较流行的解析库,例如 lxml,使用的是 Xpath 语法,同样是效率比较高的解析方法.如果大家对 Beau ...

  4. 芝麻HTTP:Python爬虫利器之Xpath语法与lxml库的用法

    安装 ​pip install lxml 利用 pip 安装即可 XPath语法 XPath 是一门在 XML 文档中查找信息的语言.XPath 可用来在 XML 文档中对元素和属性进行遍历.XPat ...

  5. 12.Python爬虫利器三之Xpath语法与lxml库的用法

    LXML解析库使用的是Xpath语法: XPath 是一门语言 XPath可以在XML文档中查找信息 XPath支持HTML XPath通过元素和属性进行导航 XPath可以用来提取信息 XPath比 ...

  6. Xpath语法与lxml库的用法

    BeautifulSoup 已经是非常强大的库了,不过还有一些比较流行的解析库,例如 lxml,使用的是 Xpath 语法,同样是效率比较高的解析方法. 1.安装 pip install lxml 2 ...

  7. 获得供应商最近一次报价:OVER(PARTITION BY)函数用法的实际用法

    利用rownumber ,关键字partition进行小范围分页 方法一: --所有供应商对该产品最近的一次报价with oa as(select a.SupplierId ,UnitPrice,Pr ...

  8. C++ set用法以及迭代器用法

    有关set的一些常用函数 1.begin() / end() 返回首/尾元素迭代器 2.rbegin() / rend() 返回尾/首元素反向迭代器,反向迭代器可以反向遍历容器的迭代器,从下面的程序已 ...

  9. List GroupBy真实用法,Reflection(反射)用法,Enum用法,正则,搜索下拉布局

    1.List  GroupBy 用法 var _roomProducts = homesingProducts.GroupBy(t => t.RoomName); RoomedProducts ...

随机推荐

  1. hi-nginx-1.3.4编译安装

    hi-nginx既是 web 服务器,也是 application 服务器.它开源在https://github.com/webcpp/hi-nginx 它是NGINX的超集,因此与编译NGINX稍有 ...

  2. poj-1056-IMMEDIATE DECODABILITY(字典)

    Description An encoding of a set of symbols is said to be immediately decodable if no code for one s ...

  3. Redis Setex命令

    Redis SETEX命令用于在Redis键中的指定超时,设置键的字符串值. 返回值 字符串,如果在键中设置了值则返回OK.如果值未设置则返回 Null. 语法 下面是Redis SETEX命令的基本 ...

  4. Java NIO之套接字通道

    1.简介 前面一篇文章讲了文件通道,本文继续来说说另一种类型的通道 -- 套接字通道.在展开说明之前,咱们先来聊聊套接字的由来.套接字即 socket,最早由伯克利大学的研究人员开发,所以经常被称为B ...

  5. Algorithm --> 十大排序算法

    十大排序算法 主要排序法有:  一.冒泡( Bubble)排序—— 相邻交换  二.选择排序 ——每次最小/ 大排在相应的位置  三.插入排序 ——将下一个插入已排好的序列中  四.壳( Shell) ...

  6. Matlab绘图基础——散点生成三角网(TIN)

    %例一:二维三角网TIN模型的生成 X=rand(10,2)*5; dt=DelaunayTri(X(:,1),X(:,2));       %生成三角网 triplot(dt);hold on;   ...

  7. Linux运维人员共用root帐户权限审计(转至马哥Linux运维)

    一.应用场景 在中小型企业,公司不同运维人员基本都是以root 账户进行服务器的登陆管理,缺少了账户权限审计制度.不出问题还好, 出了问题,就很难找出源头.这里介绍下,如何利用编译bash 使不同的客 ...

  8. CentOS 6.5 通过命令行安装发送邮件

    1.安装sendmail: yum install sendmail 2.安装mailx: yum install mailx -y 3.编辑发送的配置文件: vi /etc/mail.rc #在最后 ...

  9. spring整合springmvc和hibernate

    上篇文章使用maven搭建了web环境,这篇来记录下如何使用spring整合springmvc和hibernate,亦即spring+springmvc+hibernate框架整合. 第一步:首先配置 ...

  10. 转:运行page页面时的事件执行顺序及页面的回发与否深度了解

    using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Secu ...