推广 热搜: 公司  快速  中国  上海    未来  企业  政策  教师  系统 

Python 技术 -- Python Spider 初学

   日期:2025-01-02     作者:caijiyuan    caijiyuan   评论:0    移动:http://fabua.ksxb.net/mobile/news/4906.html
核心提示:本部分是为 Python Spider 的简单描述,适合于复习和思路回溯 -- CF.FC简约、简洁、简单 -- 尘风风尘人不是机器,学习的时候不要

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

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

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

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

1.1.1 网络爬虫原理

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

1.1.2 网络爬虫分类

  • 通用网络爬虫:爬取全网数据,又名全网爬虫
  • 聚焦网络爬虫:爬取特定网页数据,节省了硬件和网络资源
  • 增量网络爬虫:爬取有更新的已下载和新产生的网页的数据
  • 深层网络爬虫:爬取只有用户提交一些关键词才能获取的网页数据

1.1.3 网络爬虫应用

  • 网络爬虫应用:搜索引擎、企业用户、普通用户

1.1.4 网络爬虫作用

  • 制定营销策略、爬取网站图片、爬取网站小说、爬取学术论文
  • 爬取团购价格、爬取商品信息、爬取招聘信息、制作搜索引擎


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

1.2.1 爬取网页

  • 爬取网页概念:获取网页的源代码
  • 爬取网页过程:先 HTTP 网页请求,再 HTTP 网页响应
  • 爬取网页库包:urlib、requests、selenium、aiohttp 等

1.2.2 解析网页

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

1.2.3 存储数据

  • 存储数据概念:将提取数据保存起来,以便后续使用
  • 存储数据方式:JSON 或 CSV 文件、MySQL 或 MongoDB 数据库


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

1.3.1 网络爬虫合法性

  • 网络爬虫法律起源:保护知识的产权
  • 网路爬虫注意事项:不要触碰道德的底线,甚至越过法律的雷池、控制网页请求速度、尊重知识产权

1.3.2 网络爬虫 Robots 协议

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


Python 包、Pycharm 软件、Ancaconda 软件

1.4.1 Python 包

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

1.4.2 Pycharm 软件

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

1.4.3 Ancaconda 软件

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


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

HTTP 协议、HTTP 请求、HTTP 响应

2.1.1 HTTP 协议

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

2.1.2 HTTP 请求

  • 请求网址(Request URL):用来唯一确定请求的资源
  • 请求方法(Request Method):常见的 GET 方法、POST 方法
  • 请求头(Request Headers):编写爬虫程序时多数需设定请求头,不同请求的请求头包含内容不同
  • 请求体(Request Body):POST 请求的请求体是表单数据,GET 请求的请求体为空

2.1.3 HTTP 响应

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


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

2.2.1 urllib 简介

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

2.2.2 urllib request 请求模块

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

2.2.2 urllib error 异常模块

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

2.2.3 urllib parse 解析模块

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

2.2.4 urllib robotparser 协议模块

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


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 内置标准库(内置库),使用前需要手动下载安装

2.3.2 requests 库请求方法

  • requests 库请求方法:提供了几乎所有的 HTTP 请求方法

2.3.3 requests 库传递 URL 参数

  • requests 库传递 URL 参数作用:通过 URL 来传递查询参数,便于 params 参数的设置

2.3.4 requests 库定制请求头

  • requests 库定制请求头概念:通过直接传递字典形式的 headers 参数实现定制请求头

2.3.5 requests 库设置 cookie

  • requests 库设置 cookie 作用:维持登录状态

2.3.6 requests 库设置超时

  • requests 库设置超时作用:防止服务器没有响应,程序一直等待响应

2.3.7 requests 库获取二进制文件

  • requests 库获取二进制文件概念:图片、音视频等本质是二进制码,有特定保存格式和解码方式


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

2.4.1 Python 的字符编码

  • Python 的字符编码概念:Python 3 中字符串用 str(默认为 Unicode 编码格式) 或 bytes 类型
  • Python 的字符编码作用:以 Unicode 作为中间编码,即先解码成 Unicode,再将 Unicode 编码

2.4.2 Python 的乱码问题

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


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

HTML、HTML DOM、CSS、Javascript

3.1.1 HTML

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

3.1.2 HTML DOM

  • DOM 概念:文档对象模型
  • DOM 作用:定义了访问 HTML 和 XML 文档的标准

3.1.3 CSS

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

3.1.4 Javascript

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


lxml 库简介、lxml 库语法

3.2.1 lxml 库简介

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

3.2.2 lxml 库语法

  • lxml 库语法分类:路径选择表达式(路径选择节点、属性选择节点)、内建函数(text()、())


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 文档,它是第三方库使用前需安装


3.3.2 beautifulsoup4 库使用

  • beautifulsoup4 库的使用步骤:用 BeautifulSoup() 创建一个 BeautifulSoup 对象

3.3.3 beautifulsoup4 类的对象

  • BeautifulSoup 类的对象的属性名:与 HTML 的标签名相同
  • BeautifulSoup 类的对象常用属性:name、string、attrs、contents

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()

3.3.5 beautifulsoup4 CSS 选择器

  • BeautifulSoup4 库的 CSS 选择器使用:调用 select() 函数并传入相应的 CSS 选择器


正则表达式简介、

3.4.1 正则表达式简介

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


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

  • MDN
  • JetBrains
  • Anaconda
  • Pycharm
  • Anaconda
  • 崔庆才 《Python3网络爬虫开发实战 第2版》
  • 崔庆才

本文地址:http://fabua.ksxb.net/news/4906.html    海之东岸资讯 http://fabua.ksxb.net/ , 查看更多

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。

 
 
更多>同类最新资讯
0相关评论

文章列表
相关文章
最新动态
推荐图文
最新资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  粤ICP备2023022329号