Python 技术 -- Python Spider 初学

本部分是为 Python Spider 的简单描述,适合于复习和思路回溯 -- CF.FC

Python Spider 知识简谱

简约、简洁、简单 -- 尘风风尘

一、网络爬虫入门

人不是机器,学习的时候不要死记硬背,应该用脑子去解决大多数问题 -- CF.FC

1.1 网络爬虫简介

网络爬虫原理、网络爬虫分类、网络爬虫应用、网络爬虫作用

1.1.1 网络爬虫原理

  • 网络爬虫起源:数据价值大且量多
  • 网络爬虫别名:网络蜘蛛(Spider)
  • 网络爬虫作用:自动采集网络数据
  • 网络爬虫本质:由 Python 编写的自动化程序
  • 网络爬虫理解:互联网类似一张大蜘蛛网,爬虫类似蜘蛛在蛛网上循环往复爬取信息
  • 网络爬虫原理:根据设定的目标 URL、URL 列表爬取并解析网络数据,直到满足要求后停止
网络爬虫还有一个别名叫做"网络机器人",因为它就像机器人一样自动爬取信息且不知疲惫

大数据主要特征:大量(Volume)、多样(Variety)、高速(Velocity)、价值(Value),即"4V"

Python:主流的编程语言或脚本语言,又称为"万金油"语言,开发者为"吉多·范罗苏姆"即"龟叔"

URL(Uniform Resource Locator):统一资源定位符,是互联网上标准资源的地址,经它可访问对应资源

1.1.2 网络爬虫分类

  • 通用网络爬虫:爬取全网数据,又名全网爬虫
  • 聚焦网络爬虫:爬取特定网页数据,节省了硬件和网络资源
  • 增量网络爬虫:爬取有更新的已下载和新产生的网页的数据
  • 深层网络爬虫:爬取只有用户提交一些关键词才能获取的网页数据
通用网络爬虫用途:门户网站、搜索引擎、大型网络服务提供商的数据采集

聚焦网络爬虫用途:特定领域信息有需求的场景的数据采集

增量网络爬虫用途:网页内容常更新或不断有新网页出现的网站的数据采集

深层网络爬虫用途:用户注册、用户登录的网页的数据采集

1.1.3 网络爬虫应用

  • 网络爬虫应用:搜索引擎、企业用户、普通用户
企业的爬虫软件有:火车头、八爪鱼、GooSeeker

搜索引擎的爬虫一:Google 的 Googlebot、MircoSoft Bing 的 Bingbot 等

搜索引擎的爬虫二:Baiduspider、Baiduspider-image、Baiduspider-news 等

1.1.4 网络爬虫作用

  • 制定营销策略、爬取网站图片、爬取网站小说、爬取学术论文
  • 爬取团购价格、爬取商品信息、爬取招聘信息、制作搜索引擎
爬虫可把网站或 App 见到的数据保存下来,实现可见即可得(WYSIWYG,What you see is what you get)

1.2 网络爬虫流程

爬取网页、解析网页、存储数据

1.2.1 爬取网页

  • 爬取网页概念:获取网页的源代码
  • 爬取网页过程:先 HTTP 网页请求,再 HTTP 网页响应
  • 爬取网页库包:urlib、requests、selenium、aiohttp 等
网页源代码类型:动态源码( ASP、PHP、JSP、.NET 等)、静态源码( HTML 等)

爬虫的网页源码:静态源代码,即主要是爬取 HTML 的 <body> </body> 中的内容

HTTP(Hyper Text Transfer Protocol):超文本传输协议,又称 " Request-Response 协议"

1.2.2 解析网页

  • 解析网页概念:根据网页结构,分析网页源码,提取网页数据
  • 解析网页好处:使杂乱无章的数据变清晰,以便后续分析处理
  • 解析网页方法:正则表达式(万能方法)、XPath + CSS(简便方法)
  • 解析网页库包:beautifulsoup4(bs4)、lxml、pyquery、tesserocr 等
正则表达式(Regular Expression):用于模式匹配和搜索文本的工具

XPath(XML Path Language):XML 路径语言,用于在 XML 文档中查找信息

CSS(Cascading Style Sheets):层叠样式表,用于设置文档的样式,是一种样式表语言

1.2.3 存储数据

  • 存储数据概念:将提取数据保存起来,以便后续使用
  • 存储数据方式:JSON 或 CSV 文件、MySQL 或 MongoDB 数据库
JSON(JavaScript Object Notation):JS对象简谱,是一种轻量级的数据交换格式

CSV(Comma-Separated Values):逗号分隔的值,是一种实用的文件格式,形似表格,类似于文本文件

MySQL:一个 DBMS(数据库管理系统),由瑞典 MySQLAB 公司开发,目前属于 Oracle(甲骨文)公司

MongoDB:一款流行的开源文档型数据库,原名来自于"Humongous"(庞大), 即可以处理大规模的数据

1.3 网络爬虫协议

网络爬虫合法性、网络爬虫 Robots 协议

1.3.1 网络爬虫合法性

  • 网络爬虫法律起源:保护知识的产权
  • 网路爬虫注意事项:不要触碰道德的底线,甚至越过法律的雷池、控制网页请求速度、尊重知识产权
爬虫法律法规:http://www.cac.gov.cn/2019-05/28/c_1124546022.htm

1.3.2 网络爬虫 Robots 协议

  • 网络爬虫 Robots 协议概念:互联网中的道德规范,又称爬虫协议
  • 网络爬虫 Robots 协议作用:方便爬虫用户查看网站是否支持爬取
  • 网络爬虫 Robots 协议位置:存放在网站根目录下的 robots.txt 文本文件
  • 网络爬虫 Robots 协议访问:根域名(网址/IP)+ robots.txt,如:www.python.org/robots.txt
  • 网络爬虫 Robots 协议内容:User-agent(爬虫名)、Disallow(禁止访问)、Allow(允许访问)
Robots 协议全称"网络爬虫排除标准"(Robots exclusion protocol)

User-agent、Disallow、Allow 取值为正则表达式符号(*、?) + /(根目录)

User-agent:若是 * ,则表示对象是所有爬虫,等价于正则表达式中的符号 * 的作用

Allow:其值为地址,且描述格式符合正则表达式(regex)的规则,可用正则表达式筛选出可访问的地址

Disallow:其值为地址,且描述格式符合正则表达式(regex)的规则,可用正则表达式筛选出不可访问的地址

1.4 网络爬虫环境

Python 包、Pycharm 软件、Ancaconda 软件

1.4.1 Python 包

  • Python 概念:TIOBE 排行榜上常年榜首的流行的编程语言,由荷兰龟叔发明
  • Python 优势:免费、简单、开源、跨平台、面向过程和对象、动态、生态良好
  • Python 下载:直接在其官网下载,不要在其它网站下载,以免受到流氓软件的侵扰
  • Python 安装:按照 Python 提示按部就班,但注意勾选 "Add Python X.xx to path" 选项
  • Python 使用:打开内置简易集成开发环境 IDLE,可用交互式模式或脚本式模式编写 Python 代码
TIOBE:全世界的编程语言排行榜,通过它可知道某一编程语言的火热程度

龟叔:真名"吉多·范罗苏姆",其著名话语有"Life is short, you need python!"

开源:最初指开源软件(OSS),开源软件指可任意获取、查看、修改其源代码,著名组织有 Apache(ASF)

跨平台:"Wirte once,run any where",即超强的可移植性,三大主流平台有 Windows、Linux、Mac OS

面向对象编程(OOP):一切事物都抽象成对象处理,其三大特性有继承、封装、多态,代表有 Java、C++

面向过程编程(Procedure Oriented Programming):一切以过程为中心,即问题的解决必须指明相应步骤

动态:在运行时确定数据类型,变量使用前不需要类型声明,如:Python,相应的有静态语言,如:Java

"Add Python X.xx to path" 选项:帮助 Windows 自动设置 Python 系统环境变量,以便后续的使用

集成开发环境(Integrated Development Environment):简称 IDE,用于进行各种程序的开发

IDLE:Python 安装时自带的编辑器,拥有 Python 基本编程环境,相当于简易 IDE,适用于简短的代码验证

1.4.2 Pycharm 软件

  • Pycharm 概念:JetBrains 公司著名的 Python IDE,用于专业 Python 开发
  • Pycharm 优势:便于编写、调试、运行 Python 代码、众多插件实现强大的扩展
  • Pycharm 下载:直接在其官网下载,不要在其它网站下载,以免流氓软件的侵扰
  • Pycharm 安装:按照 Pycharm 软件提示安装即可,即"傻瓜式安装",但路径不能有空格和中文
  • Pycharm 使用:首次使用需先配置 Python 解释器,再创建 Python 工程,最后创建 Python 文件
JetBrains:一家位于捷克的布拉格的软件开发公司,旗下有许多优秀的各种编程语言的 IDE,如:IDEA

Python 解释器:用于把 Python 语言翻译成计算机 CPU(中央处理器)能理解的机器指令,相当于翻译官

Pycharm 的 Virtualenv 是虚拟环境管理器,用于创建多个虚拟环境,可为不同项目提供独立 Python 环境

Pycharm 的 Virtualenv 在不继承全局安装包的情况下,在安装所需要的包时,会自动安装到该虚拟环境下

Python 源文件扩展名为".py",若要在 PyCharm 导入已经编写好的源文件,可将源文件放到项目文件夹根目录

1.4.3 Ancaconda 软件

  • Ancaconda 概念:Python 科学计算发行版,即内置 Python 和众多三方库
  • Ancaconda 优势:便于管理 Python 工程环境、避免重复下载常用的三方包
  • Ancaconda 下载:直接在其官网下载,但因它是国外网站,所以下载的速度慢
  • Ancaconda 安装:按照 Anaconda 软件提示安装即可,即"傻瓜式的安装方式"
  • Ancaconda 使用:打开 Anaconda 后可创建专属 Python 工程环境,同时可使用 conda 环境
若安装了 Anaconda 则无需额外安装 Python ,可在 Pycharm 中集成 conda 环境

Python 科学计算发行版:Python(x,y)、WinPython、Anaconda、Enthought Canopy

Conda:适用于任何语言的软件包、依赖项和环境管理系统,包括 Python、R、Ruby、Lua、Scala、Java、C

二、网络爬虫基础

贪多不化,应该把理论应用于实践中,而不是一直只是表面上的感动自己 -- CF.FC

2.1 HTTP

HTTP 协议、HTTP 请求、HTTP 响应

2.1.1 HTTP 协议

  • HTTP 协议概念:超文本传输协议,主要涉及 Request(请求)、Response(响应)【三握四挥】
  • HTTP 协议过程:输入 URL -> 发送请求 -> 解析和处理请求 -> 返回响应 -> 解析响应 -> 呈现内容
  • HTTP 协议操作:打开网页 -> 鼠标右键 -> 检查选项 -> 网络选项(若无请求,需要重新刷新页面)
HTTP 原理(过程):URL-> HTTP 请求 -> 解析和处理 -> HTTP 响应 -> 对 HTTP 响应解析-> 呈现内容

上述 HTTP 协议操作是以 Windows 的 Edge 为例,其它主流浏览器,如:Google 的 Chrome 的操作类似

2.1.2 HTTP 请求

  • 请求网址(Request URL):用来唯一确定请求的资源
  • 请求方法(Request Method):常见的 GET 方法、POST 方法
  • 请求头(Request Headers):编写爬虫程序时多数需设定请求头,不同请求的请求头包含内容不同
  • 请求体(Request Body):POST 请求的请求体是表单数据,GET 请求的请求体为空
URL构成:<协议>://<用户名>:<密码>@<主机域名或者ip地址>:<端口号>/<路径>;<参数>?<查询>#<片段>

get 请求一般不需要设置 Content-Type,只有 post 才有必要设置

请求方法:GET、POST、HEAD、PUT、DELETE、CONNECT、OPTIONS、TRACE、PATCH

请求头的内容类型(Content-Type):键值对(Key-Value)、图片、文本、应用程序、多部分

GET、POST 区别:GET 大小为 1KB 且 URL 含参数及速度快、POST 大小无限制且 URL 不含参数及速度慢

2.1.3 HTTP 响应

  • 响应状态码(Response Status Code):表示服务器的响应状态,根据它来判断是否请求是否响应
  • 响应头(Response Headers):包含了服务器对请求的应答信息
  • 响应体(Response Body):包含响应的正文数据
请求网页时响应体是网页的网页源代码,请求图片时响应体是图片的二进制数据

2.2 urllib 库

urllib 简介、urllib request 请求模块、urllib error 异常模块、urllib parse 解析模块
urllib robotparser 协议模块

2.2.1 urllib 简介

  • urllib 概念:urllib 库是 Python 内置标准库,无需额外安装即可使用,总共有四个模块
  • urllib 设计理念:先请求网页 -> 再解析 robots 文件-> 再解析网页源码 -> 终处理异常
模块一:parse 用于解析、拆分、合并 URL

模块二:request 用于模拟发送 HTTP 请求

模块三:error 用于处理 HTTP 请求错误时的异常

模块四:robotparser 用于解析网站的 robots.txt 文件

2.2.2 urllib request 请求模块

  • request 请求模块构成:urlopen() 函数 + Request() 类 + ...
  • request 请求模块作用:提供基本构造 HTTP 请求的方法,同时还可处理授权验证、重定向、Cookie
urlopen() 函数作用:用来构造基本的 HTTP 请求

Request() 类作用:用来处理 HTTP 较复杂的请求信息

Request()类 需要和 urlopen() 函数组合在一起去使用

2.2.2 urllib error 异常模块

  • error 异常模块构成:URLError 类、HTTPError 类
  • error 异常模块作用:处理 URL、HTTP 的异常,以免程序崩溃
HTTPError 类是 URLError 类的子类,专门处理 HTTP 请求的异常

URLError 类是 error 异常模块的基类,可捕获request模块产生的异常

2.2.3 urllib parse 解析模块

  • parse 模块构成:合并函数、拆分函数、转换函数
  • parse 模块作用:提供了解析 URL 的方法,包括 URL 的拆分、合并、转换
所有函数都是相辅相成

2.2.4 urllib robotparser 协议模块

  • robotparser 模块构成:RobotFileParser 类
  • robotparser 模块作用:可通过分析网站的 robots.txt 文件来判断某网页是否能被爬取
RobotFileParser 类用来分析网站的 Robots 协议

2.3 requests 库

requests 库概述、requests 库请求方法、requests 库传递 URL 参数
requests 库设置 Cookie、requests 库设置超时、requests 库获取二进制文件

2.3.1 requests 库概述

  • requests 库的概念:对 urllib 库的进一步封装,使得使用起来更便捷
  • requests 库作用一:实现 URL 获取、HTTP 长连接和连接缓存、HTTP 会话、SSL 验证、流下载
  • requests 库作用二:身份认证、Cookie 会话、文件分块上传、HTTP(S) 代理功能、连接超时处理等
  • requests 库的使用:因 requests 库不是 Python 内置标准库(内置库),使用前需要手动下载安装
requests 属于三方库或第三方库,使用前需额外手动下载安装,且要成功安装

三方库下载方式:pip、conda(Anaconda)、mamba、Pycharm(Package、Interpreter、Install)

2.3.2 requests 库请求方法

  • requests 库请求方法:提供了几乎所有的 HTTP 请求方法
requests 库中最常用的是 GET/get 方法和 POST/post 方法

2.3.3 requests 库传递 URL 参数

  • requests 库传递 URL 参数作用:通过 URL 来传递查询参数,便于 params 参数的设置
可用 get() 函数或 post() 函数的 params 参数进行 URL 的设置

2.3.4 requests 库定制请求头

  • requests 库定制请求头概念:通过直接传递字典形式的 headers 参数实现定制请求头
可用 get() 函数或 post() 函数中的字典形式的 headers 参数,给 User_Agent 定制请求头
  • requests 库设置 Cookie 作用:维持登录状态
Cookie 可保持当前登录状态,避免重复请求

Cookie还可通过get()函数或post()函数的 cookies 参数进行设置

Cookie 在 Edge 中本地存放的文件为 History、Cookies、Bookmarks

Cookie 可帮助用户记录访问 Web 页面时的个人信息,并保存在客户端,再次访问同一页面时提供保存的信息

Cookie 本地位置:C:\Users\XXX\AppData\Local\Microsoft\Edge\User Data\Default(XXX:用户名)

2.3.6 requests 库设置超时

  • requests 库设置超时作用:防止服务器没有响应,程序一直等待响应
可用 get() 函数或 post() 函数的 timeout 参数设置,让程序在设置的秒数停止等待抛出 Timeout 异常

2.3.7 requests 库获取二进制文件

  • requests 库获取二进制文件概念:图片、音视频等本质是二进制码,有特定保存格式和解码方式
想要爬取多媒体文件(音频、视频),需先获取它们的二进制数据

2.4 字符编码

Python 的字符编码、Python 的乱码问题

2.4.1 Python 的字符编码

  • Python 的字符编码概念:Python 3 中字符串用 str(默认为 Unicode 编码格式) 或 bytes 类型
  • Python 的字符编码作用:以 Unicode 作为中间编码,即先解码成 Unicode,再将 Unicode 编码
chardet 库属于三方库,需要额外手动下载

解码用 decode()函数、编码用 encode()函数、查看编码用 chardet 库中的 detect()函数

Unicode(Uniform code): 国际标准字符集,又称"万国码"用于解决乱码问题,常见有 UTF-8/16/32

Unicode 不适合用来传输和存储,所以需将 str 类型进行编码转成 bytes 类型(如:UTF-8、GBK 等格式)

2.4.2 Python 的乱码问题

  • Python 的乱码问题起源:因少数网页采用 GBK 编码或用了 gzip 压缩导致中文乱码
  • Python 的乱码问题解决:在解析网页前,需检查请求返回内容的编码方式并进行解码
requests 会自动对来自服务器的内容进行解码,不同的编码格式或压缩格式导致中文乱码

三、网页解析基础

别人可以,凭什么为什么却自己误以为我自己不行呢 -- CF.FC

3.1 网页基础

HTML、HTML DOM、CSS、JavaScript

3.1.1 HTML

  • HTML 概念:超文本标记语言(Hyper Text Marked Language,HTML)
  • HTML 标签:<html>、<head>、<body>,上述三个标签可组成网页基本结构
  • HTML 作用:通过不同类型的标签来描述不同元素,各标签可通过不同的排列和嵌套形成网页的框架
  • HTML 查看:Edge 浏览器中先右键再选择"查看页面源代码",或先右键再选择"检查"最后选择"元素"
HTML 是一种描述网页的语言

Google 的 chrome 浏览器中的网页源代码查看方式类似

学习 HTML 是为了更好地分析网页源代码,进而从中提取想要的数据

HTML语法格式:<标签  属性="参数值">,如:<p id=1>hello</p>

CSS(Cascading Style Sheets,CSS)层叠样式表、JavaScript(JS)

网页一般由 HTML(定义网页结构和内容)、CSS(定义网页样式)、JavaScript(定义网页行为)组成

HTML 常用标签:<! DOCTYPE>、<html>、<head>、<meta>、<title>、<body>、<div>、<li>、<ul>

3.1.2 HTML DOM

  • DOM 概念:文档对象模型
  • DOM 作用:定义了访问 HTML 和 XML 文档的标准
HTML 中的元素指 HTML 的各种标签

DOM(Document Object Model,DOM):文档对象模型

XML(Extensible Markup Language):可扩展标记语言,即标签名在一定规则下可 DIY

HTML DOM 将 HTML 文档呈现为带有元素、属性和文本的树结构即节点树,树形结构类似于大树的倒置

DOM 树的顶端节点称为根(root),此外每个节点都有父节点(parent),同时有任意子节点和兄弟节点

3.1.3 CSS

  • CSS 概念:层叠样式表(Cascading Style Sheets,CSS)
  • CSS 分类:基本选择器、伪选择器、分组选择器、组合器
  • CSS 作用:可通过其选择器定位 HTML 节点,进而对其设置样式
伪选择器分为伪类(:)、伪元素(::)

分组选择器指将不同的选择器组合在一起(A 选择器,B 选择器),如:div,span

组合器分为后代(空格)、直接子代(>)、一般兄弟(~)、紧邻兄弟(+)、列组合器(||)

基本选择器分为通用(*)、元素(元素名)、类(class 属性)、ID(ID 属性)、属性选择器(属性名)

3.1.4 JavaScript

  • JavaScript 概念:一种多范式动态语言,有类型、标准内置(built-in)对象,语法来源于 Java 和 C
JavaScript是一种弱类型动态语言

JavaScirpt 类型:Symbol(符号)(ES2015 新增)、Function(函数)、Array(数组)

JavaScirpt 类型:Number(数字)、String(字符串)、Boolean(布尔)、Object(对象)

JavaScirpt 类型:Date(日期)、undefined(未定义)、RegExp(正则表达式)、null(空)

3.2 lxml 库

lxml 库简介、lxml 库语法

3.2.1 lxml 库简介

  • lxml 库核心:etree 模块
  • lxml 库概念:Python 的一个网页解析库
  • lxml 库作用:支持HTML、XML、XPath 的解析,且解析效率非常高
  • lxml 库使用:etree.HTML() -> 用 XPath 解析对象对 Element 对象进行节点选择
etree(Element Tree)代表元素树

lxml 库的大部分功能是由 etree 模块提供

几乎所有想要定位的节点,都可用 XPath 来选择

因 lxml 库不是 Python 内置的标准库,使用前需额外手动下载安装

XPath(XML path language,XPath):XML路径语言,用于在 XML 或 HTML 文档中查找信息

3.2.2 lxml 库语法

  • lxml 库语法分类:路径选择表达式(路径选择节点、属性选择节点)、内建函数(text()、())
XPath 同样有绝对路径和相对路径

XPath 提取文本的函数是text()、()

XPath 的 [] 索引值从 1 开始而不是 0

解析网页的目的是通过选择节点来提取节点文本或属性值,从而获取所需的信息

Xpath 通过路径选择节点语法:.(当前节点)、. .(当前父节点)、*(当前所有子节点)

Xpath 通过路径选择节点:因 HTML 源代码是层次结构,若要选择节点可用 XPath 层层往下查(大到小)

Xpath 通过路径选择节点语法:/(下级所有子节点)、//(下级所有子孙节点)、[](下级索引的子节点)

XPath 通过属性选择节点:可在仅掌握节点部分特征的情况下,利用模糊搜索函数选择节点

XPath 通过属性选择节点语法:contains()(选择包含什么名称的节点)、and(选择属性1和属性2的节点)

XPath 通过属性选择节点语法:@(选属性是什么的节点/提取属性值)starts-with()(选以什么开头的节点)

text() 用于提取上级指定节点的文本返回一个列表、() 用于提取上级所有节点的文本返回一个字符串

3.3 beautifulsoup4 库

beautifulsoup4 库简介、beautifulsoup4 库使用、beautifulsoup4 类的对象
beautifulsoup4 函数选择器、beautifulsoup4 CSS 选择器

3.3.1 beautifulsoup4 库简介

beautifulsoup4 库解析器一:Python 标准库的 HTML 解析器、html5lib
beautifulsoup4 库解析器二:lxml 的 XML 解析器、lxml 的 HTML 解析器
beautifulsoup4 库概念:beautifulsoup4 库也称 Beautiful Soup 库或 bs4 库
beautifulsoup4 库作用:用于解析 HTML 或 XML 文档,它是第三方库使用前需安装

beautifulsoup4 库可自动将输入文档转换为 Unicode 编码,将输出文档转换为 UTF-8 编码

3.3.2 beautifulsoup4 库使用

  • beautifulsoup4 库的使用步骤:用 BeautifulSoup() 创建一个 BeautifulSoup 对象
beautifulsoup4 库中最重要的是 BeautifulSoup 类,它的实例化对象相当于一个页面

解析网页时需用 BeautifulSoup() 创建一个 BeautifulSoup 对象,该对象是一个树形结构

BeautifulSoup 对象包含了 HTML 页面中的标签元素,如:<head>、<body>、<div>、<dt>等

HTML 的主要结构相当于 BeautifulSoup 对象的属性,可通过"对象名.属性名"形式获取属性值(即节点)

3.3.3 beautifulsoup4 类的对象

  • BeautifulSoup 类的对象的属性名:与 HTML 的标签名相同
  • BeautifulSoup 类的对象常用属性:name、string、attrs、contents
HTML 允许在标签中嵌套其他标签

attrs 返回的是标签的所有属性组成的字典类型的数据,可通过"atrrs['属性名']"形式获取属性值

string 属性的返回值遵循的原则:
若内部无标签则返回其中内容、若内部只有一标签则返回最里面标签内容、若内部还有多标签则返回 None

3.3.4 beautifulsoup4 函数选择器

  • BeautifulSoup4 库的方法选择器分类:find()、find_all()
  • BeautifulSoup4 库的方法选择器分类:find_parent()、find_parents()
  • BeautifulSoup4 库的方法选择器分类:find_previous()和find_all_previous()
  • BeautifulSoup4 库的方法选择器分类:find_next_sibling()、find_next_siblings()
  • BeautifulSoup4 库的方法选择器分类:find_previous_sibling()、find_previous_siblings()
find_all() 方法会遍历整个 HTML 文件,按照条件返回所有匹配的节点

find() 与 find_all() 用法类似,find() 返回结果是第一个匹配的节点,find_all() 返回结果是列表

find_all() 对于一些常用属性(如:id、class等),可不用 attrs 字典形式来传递,而用赋值的形式直接传入参数(如:find_all(class_='hotnews'),因 class 在 Python 中是一个关键字,所以需加下划线

3.3.5 beautifulsoup4 CSS 选择器

  • BeautifulSoup4 库的 CSS 选择器使用:调用 select() 函数并传入相应的 CSS 选择器
CSS 选择器有基本选择器、组合器

3.4 正则表达式

正则表达式简介、

3.4.1 正则表达式简介

  • 正则表达式概念:是一种用于处理字符串的强大工具,用预定义的特定模式匹配一类共同特征的字符串
  • 正则表达式作用:主要用于快速、准确地完成复杂字符串的查找、替换等
.:任意

?*+:0、1、多

\dwsb:数字、字母、空白、边界

修饰符:i(Igore)s、m()g(global)

Python Spider 资源分享

只有在不断地刻苦专研中才能真正地体会到知识的广博 -- CF.FC

一、官网资源

二、下载资源

三、书籍资源

四、视频资源

五、阅读资源

六、参考资源

posted @ 2023-09-06 19:57  尘风风尘  阅读(671)  评论(0)    收藏  举报