文本数据采集与处理之一 下|学习笔记

简介: 快速学习文本数据采集与处理之一 下

开发者学堂课程【高校精品课-华东师范大学 - Python 数据科学基础与实践文本数据采集与处理之一 下】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/1067/detail/15511


文本数据采集与处理之一 下

 

内容介绍

一、 标签定位

二、序列定位

三、轴定位

四、常见运算符与函数

 

再详细介绍一下Xpath,真正在爬虫在工作过程当中,工作量最大的是要做网页解析,从文档对象上面去找东西,这是工作量最大的。课里面讲的方法主要是Xpath。Xpath有很多功能。主要介绍如何来定位的三种定位方法

 

一、 标签定位

image.png

第一种就是标签定位。标签定位,都知道标签就是tag,网页里面那个构成的这些元素的名字也叫节点名称。所以有这样几个标签定位方式。

1,直接用名词nodename节点的名字。找网页里面的对应的元素。那么就选取此节点的所有子节点,只要找到到一个节点下面所有就找到了,举个例子,比如说’//div’ div就是一个nodename,要找到网页里面的div里面的所有的标签。因为//表示所有的

2,单斜杠,单斜杠是从根结点出发,如果单斜杠前面已经有东西,那就从当前节点接着下面,当成根节点,然后下面找东西,比如说这个第一个斜杠head,那就是整个文档树的树根找head,然后head下面就直接连着title没有隔开的节点叫紧接着。这个解释就是从根结点找到head下面的title

3,双斜杠,是选取任意位置的某个节点 ‘//p’表示在html中找到所有的p标签。如果前面没有跟其他东西,其他这限制,那就表示,在整个文档里面找所有直批。

4,@ @是选取属性的指令,属性是从属于一个标签的,一个nodename的一个节点,例如前面的节点的div然后中括号,放在中括号里面@,@后面第一个属性,属性是名字叫class的值等于one。那就找所有div的,然后属性的类别是等于one的,这样的所有的这样的一些元素

5,再来一个标签定位时,是星号。是一个通配符。通配任意内容,例如双斜杠表示找所有的,然后div,然后这个单斜杠下面的星号,那么就是返回所有满足条件的div的这个界定这里用的最重要,最多的一个是双斜杠,有的时候可能怕麻烦就不用单斜杠 还要提一个具体位置,双斜杠反正找下面所有的,但是工作量稍微大一点。然后再一个就是指定属性。是经常用的要到网页上去找某一块内容,找邮箱地址,找某一个品牌的名字,就专门指定属性的。所以是Xpath第一种叫标签定位

 

二、序列定位

image.png1,指定具体的一个位置中,[1]表示第一个元素,例’//div[1]’里div返回第一个div对象。在这个找到的div可能很多,几十个但只找第一个div所以有的时候看网页的时候要计算一下,到底要的在第几个里面可以指定。

2,[last()]找最后一个元素。通过网页观察发现要找的内容就在网页的最后一个位置

3[last()-1]就是找倒数第二个元素

4,[position]。指明位置,一个position函数是指定范围的元素,例如双斜杠里面找所有的ul,ul是排列的列表li是里面一个向 比如说有三个圆点,四个圆点,整个叫做UL,然后里面的某一个叫做li,这个li的看position位置大于二,同时还小于五,先找是大于二的。找li标签先大于二也就从第三个开始,然后找小于五,小于五就找四个标签。

 

三、轴定位

image.png那就是上下位关系的轴定位。

1,有child定位。表示当前节点的所有子元素,孩子元素,子元素,比如说div[1],[1]表示一个序列定位,div表示前面的标签定位,child注意两个冒号型号表示下面所有的孩子节点

2,parent表示父节点

3,ancestor是祖先节点所有的祖先

4,descendant子孙节点,把所有的后代节点。

5,self表示自己本身。

 

四、常见运算符与函数

以上是轴定位。除了这几个定位之外呢,还有几个重要的内容, Xpath里面常用的运算符和函数。

image.png

函数用的最多就是返回指定元素的文本内容。抓网页,抓网页内容,主要是文本内容,例如

1,text()找book标签下text()标签下的文本。要那个显示在网页上的图

2,string()也是返回文本内容。啊string()和text()是有什么区别呢?string()是返回所有的,比text()要拿的内容更多

3,contains含有,也就是一个字符串啊是不是含有另外字符串里(str1,石头人)然后呢,我们这个例子里面看到没有,找一个div ,div里面然后contains然后点表示当前。然后双斜杠就刚刚前面所有的文本函数,然后函数里面去找到文本内容,里面还有价格,把这个都找到还有价格,要选择text中包含价格所有的div节点。

4,not()是不包含。但是他要跟condtains组合的

5,Xpath还可以支持各种运算符。家庭之后的可以支持,可以计算,可以比较大小。

比如说,如果说一个标签名字叫price,可以找price大于九的那些商品,如果一个商品列表里面各种价格,不要都抓,我要抓取这个价格大于九点九九点九元的。

如果掌握了request加Xpath,基本上就可以解决大多数的网络爬虫问题。

相关文章
|
关系型数据库 MySQL 数据安全/隐私保护
查看mysql 默认端口号和修改端口号
1. 登录mysql mysql -u root -p //输入密码    2. 使用命令show global variables like 'port';查看端口号 mysql> show global variables like 'port';    3. 修改端口,编辑/etc/my.cnf文件,早期版本有可能是my.conf文件名,增加端口参数,并且设定端口,注意该端口未被使用,保存退出。
23447 0
|
10月前
|
人工智能 JavaScript 前端开发
你可能不敢想象,2025 年,jQuery要更新到 4.0 了
jQuery,由 John Resig 于2006年创建,曾帮助无数开发者简化DOM操作、事件处理和动画效果。历经19年,即便在React、Vue等现代框架盛行的今天,jQuery仍在更新。最新版4.0.0 Beta已推出,修复问题、提升性能并加入新特性,展示了其适应时代的能力。jQuery不仅是技术的坚持,更是文化和精神的传承,见证了众多开发者的青春。
483 11
|
10月前
|
JavaScript
nodejs安装之npm ERR! code CERT_HAS_EXPIREDnpm ERR! errno CERT_HAS_EXPIRED reason: certificate has expired-证书错误通用问题解决方案-优雅草央千澈
nodejs安装之npm ERR! code CERT_HAS_EXPIREDnpm ERR! errno CERT_HAS_EXPIRED reason: certificate has expired-证书错误通用问题解决方案-优雅草央千澈
1634 27
|
监控 Oracle 关系型数据库
性能监控之Telegraf+InfluxDB+Grafana+Python实现Oracle实时监控
【6月更文挑战14天】性能监控之Telegraf+InfluxDB+Grafana+Python实现Oracle实时监控
386 2
|
存储 JavaScript API
探索 Pinia:简化 Vue 状态管理的新选择(下)
探索 Pinia:简化 Vue 状态管理的新选择(下)
探索 Pinia:简化 Vue 状态管理的新选择(下)
|
芯片 iOS开发 开发者
Apple芯片Mac安装ARM版Win10完美教程(结尾附视频)(上)
Apple芯片Mac安装ARM版Win10完美教程(结尾附视频)
11197 0
|
Linux PHP
Thinkphp5+FastAdmin配置workerman消息推送(多线程)
Thinkphp5+FastAdmin配置workerman消息推送(多线程)
1018 0
|
机器学习/深度学习 人工智能 数据可视化
实用!7个强大的Python机器学习库!⛵
本文整理了7个非常有效的机器学习Python库:Prophet、Deep Lake、Optuna、pycm、NannyML、ColossalAI、emcee,用简单的方式编写复杂且耗时的代码,大大提升工作效率!
417 2
实用!7个强大的Python机器学习库!⛵
|
机器学习/深度学习 传感器 算法
2023美赛C题-Wordle预测思路及matlab代码
2023美赛C题-Wordle预测思路及matlab代码
|
JavaScript 前端开发 API
Day.js轻量级 JavaScript 时间日期处理库可替代Moment.js
Day.js轻量级 JavaScript 时间日期处理库可替代Moment.js
313 0