xpath解析html

xpath工具 浏览器安装XPath Helper

/ 根目录

//a 根目录开始 所有a标签 无论是什么位置,就算当前已经在次级目录也会回到根目录

.//a 当前目录内 所有a标签

./a 当前目录内 下一层的a标签

.当前节点

..父节点

定位标签

按单条件//a[@id=123]

按多条件//a[@class='link-title link-statistics' and @data-id='35498388' and @href] #最后一个意思是标签内存在href属性

按位置/html/body/p[last()]/a") last()只能用在路径下, //全局搜索的没有位置 因此没有last

/html/body/p[last()-1]/a") 倒数第二个p下的a标签

按位置//a[@class='abc']/span[2]/text() class为abc的a标签下的第二个span的text

//span[@id='comment_score']/span[@class='item'][2] #第二个class为item的span标签

按内容//a[contains(text(),"下一页")]

查标签内

查属性

"//a/@href" 所有a标签下的href值

"body//a[@id='10086']/@class" ID为10086的a标签内的属性class的值 值用引号括起来

"body//a[@id='10086']//@class" ID为10086的a标签内和下面的属性class的值

查文本

body//a[@id=123]/text()

scrapy/requests内使用

直接就是scrapy里spider.parse()输入的response

response.xpath("body//a[@id=123]/text()").getall() 返回全部

response.xpath("body//a[@id=123]/text()").getall()[0] 返回全部后的第一个

response.xpath(xpath语句)[0].attrib 查看里面的属性 字典形式

requests 中使用

import requests

from lxml import etree

html_text = requests.get(url='https://www.baidu.com')

html_tree = etree.HTML(html_text)

xpath_str = '/html/head/meta[1]/@charset'

xpath_str = '/html/head//meta[1]/@charset'

xpath_str = '//meta[1]/@charset'

xpath_str = '//meta[position()<3]/@charset'

xpath_str = '//meta[2]/@*' #通配符

xpath_str = "//meta[@charset='utf-8']/parent::*" 选所有父节点

xpath_str = "//meta[@charset='utf-8']/parent::a[@id=123]" 选所有父节点中的id为123的a节点

xpath_str = "//a[@id='digg_control_16347706']/ancestor::footer/@*" 那个a标签的祖先中的footer标签下的所有属性值

xpath_str = "//a[@id='digg_control_16347706']/ancestor::footer/@class" 那个a标签的祖先中的footer标签下的class属性的值

aaa = html_tree .xpath(xpath_str)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值