爬虫学习笔记——css选择器和XPath定位元素以及lxml库

查找元素笔记总结自: 慕课网-web端功能自动化定位元素.

css选择器查找元素

id查找元素

  • 语法:

    1. tag[attribute='value']
    2. "#" --- id
    3. "." --- class
  • 示例:
    匹配如下节点:
    <nav id="nav" class="clearfix">

  1. nav[id=‘nav’]
  2. nav#nav
  3. nav.clearfix

class查找元素

  • 示例:
    匹配如下节点:
<div class="csdn-side-toolbar">
<a class="option-box go-top-hide" data-type="gotop">
  1. .csdn-side-toolbar (class包含该字符串的节点)
  2. div.csdn-side-toolbar
  3. div[class=csdn-side-toolbar] (class名必须完全匹配,一个节点有多个class使用这个语法)
  4. 追加类: .class1.class2.class3
    .option-box.go-top-hide

通配符查找元素

  • 通配符:
    1. “^” — 代表以什么文本开始
    2. “$” — 代表以什么文本结束
    3. “*” — 代表包含什么文本
  • 示例:
    a[class^=‘option’]匹配如下节点:
	<a class="option-box" data-type="app">
	<a class="option-box go-top-hide" data-type="gotop">

div[class$=‘clearfix’]匹配如下节点:
<div class="container clearfix">

div[class*=‘row’]匹配如下节点:
<div class="container row center-block ">

查找子节点

匹配下面字段:

<html>
<body data-category="home" data-host_type="www">
	<div class="csdn-side-toolbar"></div>
	<div id="csdn-toolbar" class="csdn-toolbar tb_disnone  csdn-toolbar-skin-black "> </div>
</body>
</html>
  1. html>body>div(结果不唯一)
  2. body>#csdn-toolbar (通过body子节点id定位元素)
  3. body>.csdn-toolbar-skin-black (通过body子节点class定位元素)

XPath定位元素

  1. 如果元素的id不唯一,或者是动态的
  2. 或者name以及linktext属性值也不唯一
    推荐按使用Xpath定位于元素。
    语法//tag[@attribute='value']

绝对路径与相对路径

  1. Xpath中的绝对路径用单斜线"/",元素是上一级节点的子节点中的一个,不能跳级。
  2. Xpath中的相对路径用双斜线"//",元素是上一级节点的任何子孙节点中的一个,可以跳级。
  3. 路径不要使用"*",要写明标签名。

如何构建一个有效的Xpath

用Text()

//a[text()=‘收藏’]匹配如下节点:

<a href="//space.bilibili.comt" data-tryxpath-focused="true">收藏</a>

用contains关键字

语法://tag[contains(attribute,‘value’)]

//a[contains(text(),‘收藏’) and contains(@href, ‘bilibili’)]匹配如下节点:

<a href="//space.bilibili.comt" data-tryxpath-focused="true">收藏</a>

用starts-with关键字

语法://tag[starts-with(attribute,‘value’)]
示例://div[@id=‘app’]//div[starts-with(@id, ‘bili’)]匹配如下class="bili-wrapper"的div标签的4个子节点。

<div id="app">
		<div class="bili-wrapper">
			<div id="bili_douga"></div>
			<div id="bili_music"></div>
			<div id="bili_dancee"></div>
			<div id="bili_game"></div>
	</div></div>

查找父节点以及平级节点

  1. 父节点:xpath-to-some-lelment//parent::<tag>
  2. 找前面的平级节点:xpath-to-some-lelment//preceding-sibling::<tag>(注意:查找前面的平级节点,计数是开始的节点为1,从1往前数2,3,4.···)
  3. 后面的平级节点: xpath-to-some-lelment//following-sibling::<tag>

示例:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值