当前位置: 首页 > news >正文

python爬虫xpath教程_Python爬虫Xpath语法快速入门教程!

文章目录1、Xpath介绍2、Xpath路径表达式3、结合实例讲解

1、Xpath介绍

XPath 是一门在 XML 文档中查找信息的语言。XPath 可用来在 XML 文档中对元素和属性进行遍历。

2、Xpath路径表达式

表达式描述nodename选取此节点的所有子节点。/从根节点选取。//从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。.选取当前节点…选取当前节点的父节点@选取属性

3、结合实例讲解这里我就是使用百度的界面为大家进行讲解

例:我想获取图中的百度热榜,打开控制台,我们可直接根据div标签的class值进行定位(这是我们平时使用xpath语法比较多的地方)

from lxml import etree

import requests

headers = {

"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36"

}

url = "https://www.baidu.com/"

response = requests.get(url=url,headers=headers)

#使用etree进行解析

data = etree.HTML(response.text)

#可参考上表格进行对比,//div可理解为任意路径下的一个div标签,@class表示选取class属性,text()表示获取text文本

name = data.xpath("//div[@class='title-text c-font-medium c-color-t']/text()")

print(name[0])

例:我想获取热榜有哪些信息,参考下图可见其全部在ul标签下,每一个信息对于一个li标签

data = etree.HTML(response.text)

#//ul表示任意路径下的ul标签,

#表示获取ul下的所有li标签

ul = data.xpath("//ul[@class='s-hotsearch-content']/li")

#当然,大家在爬取过程中可能会遇到没有class属性的标签,这时可使用id定位,又或者定位其父标签,再往下找

#ul = data.xpath("//ul[@id='hotsearch-content-wrapper']/li")

#遍历

for li in ul:

# .//span表示当前节点下的任意span标签,我们再根据class值定位,使用text()获取文本信息

name = li.xpath(".//span[@class='title-content-title']/text()")

print(name[0])

例:定位百度热榜找它的父节点也就是a标签的href属性

data = etree.HTML(response.text)

#..表示其父节点

url = data.xpath("//div[@class='title-text c-font-medium c-color-t']/../@href")

print(url[0])

​Xpath语法其实不难的,大家需要多练习,进行实战,这样熟练掌握会很快的,可以下方的爬虫教程索引,里面有很多爬虫使用xpath写的,可以阅读看看。

相关文章:

  • h5弹框滑动 ios_稍微整理了几个经常在H5移动端开发遇到的东西
  • python获取安卓文字_Python玩转emoji
  • excel函数_分享Excel常用函数500例及Excel常用函数妙用精典案例!
  • fidic银皮书_FIDIC银皮书在国内工程总承包项目的适用(下)
  • 如何将代码变成应用程序_如何优雅的将数据库表逆向生成代码
  • macos sierra怎么升级到catalina_macOS 逐渐 iOS 化?到底是焕然一新,还是用力过猛...
  • range函数python三个参数_python内置函数之range()
  • tcp seq 带冒号_看看这篇5000字的文章,带你看不一样的Android-Http
  • python岗位简介_GitHub - nicksors/JobAnalysis: Python分析拉钩职位信息
  • 太阳能充电调节代码_新型可折叠太阳能电池板,一款业余电台的便携式移动电源...
  • oracle distinct分页优化_除夕送你10条高性能SQL优化方案
  • python 点乘_Python | 初识Python程序设计
  • java离职交接文档_年后跳槽换工作?这有一份IT项目资料“交接清单”请提前查收...
  • python画图加中文_Python中文画图乱码的解决方法
  • lms自适应滤波器matlab_MATLAB 算法面向 FPGA 的浮点定点转换
  • ES6语法详解(一)
  • IndexedDB
  • js递归,无限分级树形折叠菜单
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • React-生命周期杂记
  • storm drpc实例
  • 基于webpack 的 vue 多页架构
  • 检测对象或数组
  • 经典排序算法及其 Java 实现
  • 找一份好的前端工作,起点很重要
  • 我们雇佣了一只大猴子...
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (16)Reactor的测试——响应式Spring的道法术器
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)
  • (LeetCode 49)Anagrams
  • (笔试题)合法字符串
  • (二)pulsar安装在独立的docker中,python测试
  • (二)windows配置JDK环境
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (四)Controller接口控制器详解(三)
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (算法设计与分析)第一章算法概述-习题
  • (新)网络工程师考点串讲与真题详解
  • (轉貼) 蒼井そら挑戰筋肉擂台 (Misc)
  • .NET : 在VS2008中计算代码度量值
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .Net CoreRabbitMQ消息存储可靠机制
  • .net framework4与其client profile版本的区别
  • .Net IE10 _doPostBack 未定义