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

第二章 Python爬虫篇—数据解析与提取

目录

一.数据解析概述

二.re解析和正则表达式

三.bs4解析-HTML语法

四.Xpath解析


此章节主要讲解:数据解析概述、re模块、bs4解析-html语法、xpath解析以及正则表达式。其中正则表达式我已经写过相关笔记,这里浅略叙述,如果不懂请看我笔记:https://blog.csdn.net/2403_88453964/article/details/147055211?spm=1001.2014.3001.5502

一.数据解析概述

在上一章中,我们基本上掌握了抓取整个网页的基本技能,但是呢,大多数情况下,我们并不需要整个网页的内容,只是

需要那么一小部分,怎么办呢?这就涉及到了数据提取的问题。

本章节中,提供三种解析方式:

1.re解析

2.bs4解析

3.xpath解析

这三种方式可以混合进行使用,完全以结果做导向,只要能拿到你想要的数据,用什么方案并不重要,当你掌握了这些之后.再考虑性能的问题。

二.re解析和正则表达式

Regular Expression,正则表达式,一种使用表达式的方式对字符串进行匹配的语法规则.

我们抓取到的网页源代码本质上就是一个超长的字符串,想从里面提取内容,用正则再合适不过了,

正则的优点: 速度快,效率高,准确性高

正则的缺点: 新手上手难度有点儿高.

不过只要掌握了正则编写的逻辑关系,写出一个提取页面内容的正则其实并不复杂

正则的语法: 使用元字符进行排列组合用来匹配字符串 在线测试正则表达式https:/tool.oschina.net/regex/

元字符: 具有固定含义的特殊符号

常用元字符:

量词:控制前面的元字符出现的次数

贪婪匹配和惰性匹配

这两个要着重的说一下.因为我们写爬虫用的最多的就是这个惰性匹配。

案例:

所以我们能发现这样一个规律:.?表示尽可能少的匹配.表示尽可能多的匹配,暂时先记住这个规律.后面写爬虫会用

到的哦

re解析和正则表达式的实战案例如下:

注:

利用re解析和正则解析的时候需要你去根据html的源代码去找他们规律,作为开头和结尾,常利用.*?作为最主要的爬取正则表达式。

若一个页面有https,我们可以将get方法中的verify的值赋False可以解决。

三.bs4解析-HTML语法

bs4解析比较简单,但是呢,首先你需要了解一丟丟的html知识,然后再去使用bs4去提取,逻辑和编写难度就会非常简

单和清晰。

HTML(Hyper Text Markup Language)超文本标记语言,是我们编写网页的最基本也是最核心的一种语言:其语法规则

就是用不同的标签对网页上的内容进行标记,从而使网页显示出不同的展示效果.

上述代码的含义是在页面中显示“我爱你“三个字,但是我爱你三个字被"<h1>"和"</h1>"标记了,白话就是被括起来了被H1这个标签括起来了,这个时候,浏览器在展示的时候就会让我爱你变粗变大,俗称标题,所以HTML的语法就是用类似这样的标签对页面内容进行标记,不同的标签表现出来的效果也是不一样的.

注:

  1. h1:一级标题
  2. h2:二级标题
  3. p:段落
  4. font:字体(被废弃了,但能用)
  5. body:主体

总结:

html语法:

bs4解析语法使用代码如下:

总结:

第一步:下载并导入bs4包

第二步:把页面的源代码解析成BeautifulSoup进行处理,生成bs对象

第三步:

爬取思路如下:

bs4解析的用法,主要还是需要一点html的知识,主要解析的方法过程,首先你需要去“查看网页源代码”,大部分网页源代码都是利用了安全手段,这里可能需要抓包,作者还未学这样的技术。但是解析的过程就是根据标签不同的地方去定位,需要查找解析的它所在的链接。然后根据这个链接去利用文件存入下载的图片即可完成。

四.Xpath解析

Xpath是XML文档中搜索内容的一门语言,html是XML的一个子集

在上述html中

1.book,id,name, price....都被称为节点

2.ld,name,price,author被称为book的子节点

3.book被称为id,name,price,author的父节点

4.id,name,price,author被称为同胞节点

有了这些基础知识后,我们就可以开始了解xpath的基本语法了在python中想要使用xpath,需要安装IxmI模块:

pip install –i https://pypi.tuna.tsinghua.edu.cn/simple lxml

用法:

1.将要解析的html内容构造出etree对象.

2.使用etree对象的xpath0方法配合xpath表达式来完成对数据的提取

xpath练习代码如下:

注:

/表示层级关系,表示从根节点开始查找

//表示查找所有符合节点,不管层级关系

*表示任意节点相当于通配符

xpath入门2代码示例如下:

注:

@表示属性

 xpath的索引从1开始,[]表示索引

[@***=***]表示属性的筛选

.表示相对查找在网页中可以按F12进入开发者模式,进入到elements然后可以右击选择“copy”->”copy xpath”这样及其方便。

相关文章:

  • Python学习笔记(三)
  • Active Directory 域服务
  • <C#>在 .NET 开发中,依赖注入, 注册一个接口的多个实现
  • react从零开始的基础课
  • 【VSCode配置】运行springboot项目和vue项目
  • 精准测试背后的关键技术:电机试验平台(北重数控滑台设计专业)
  • STM32 模块化开发指南 · 第 2 篇 如何编写高复用的外设驱动模块(以 UART 为例)
  • 程序化广告行业(77/89):融资、并购与上市全景洞察
  • UE的AI判断队伍归属的机制:IGenericTeamAgentInterface接口
  • 基础数学:线性代数与优化理论
  • 机器学习 从入门到精通 day_04
  • 分治-归并系列一>翻转对
  • 移动端六大语言速记:第14部分 - 数据库操作
  • 产品开发过程模型
  • 宝塔面板面试内容整理-服务重启
  • 对接日本金融市场数据全指南:K线、实时行情与IPO新股
  • myeclise导入项目并运行
  • vs中版本号如何自动生成,解放双手?
  • 低代码开发能否取代后端?深度剖析与展望-优雅草卓伊凡
  • 蓝桥杯第十五届真题——握手问题
  • 外网浏览网站/搜索排名竞价
  • 邢台做网站价位/苏州seo服务
  • 网站建设装修/关键词优化seo公司
  • 在线做名片做海报网站/网站权重划分
  • 交通局网站建设整改/加强服务保障满足群众急需m
  • 做网站样式模板/谷歌搜索入口365