浅谈
网络爬虫
网络爬虫是 可以 自动连接到互联网站点,读取网页中的内容或者存放在网络上的各种信息,并 按照某种策略对目标信息进行采集 的 一类程序。
其实身边到处都是爬虫的产物。
- 比如说搜索引擎 (Google,百度)。他们能提供这么多搜索结果,也都是因为它们爬了很多信息,然后展示给你。
- 再来说一些商业爬虫,比如爬爬淘宝的同类商品的价格信息,好为自己的商品挑选合适的价格。
- 爬虫的用途很多很多,如果搞机器学习,爬虫就是获取数据的一种途径,网上的信息成百上千,只要懂爬虫,都能轻松获取。
实际上 ,世界上最大的搜索网站——Google 搜索本身就建构在爬虫技术之上,像 Google、百度这样的 搜索引擎 会 通过爬虫程序来不断更新自身的网站内容和对其他网站的网络索引。从某种意义上说,用户每次通过搜索引擎查询一个关键词,就是在搜索引擎服务者的爬虫程序所 “爬” 到的信息中进行查询。
- 搜索引擎服务者(比如百度、谷歌等)有一种叫做爬虫程序的软件,它 可以自动地从互联网上收集各种网页信息,并把这些信息 存储在搜索引擎的数据库 中。
- 用户 每次通过搜索引擎 查询一个关键词,就是 在这个数据库中进行查找,看看有没有和关键词相关的网页信息。
- 搜索引擎会根据一定的算法,把找到的网页信息按照 相关度 排序,然后 返回给用户。
扩展阅读:搜索引擎背后的经典数据结构和算法
当然,搜索引擎背后所使用的技术十分复杂,其爬虫技术通常也不是一般个人开发的小型程序所能比拟的。
那么,淘宝是如何在 1 毫秒从上亿个商品找到上千种运动鞋的呢,谷歌如何在 1 毫秒从万亿个网页中找寻到与你关键字匹配的几十万个网页,如此大的数据量是怎么做到毫秒返回的。
搜索引擎 爬取到的内容 怎么 索引:
- 首先,搜索引擎需要 对爬取到的网页内容 进行 预处理,去除无关的 HTML 标签、停用词、标点符号等,提取出有意义的文本信息。
- 然后,搜索引擎需要对预处理后的文本进行 分词,即将文本 切分成一个个的词语,作为搜索的最小单位。分词的方法有很多,比如基于规则、基于统计、基于机器学习等,不同的语言和领域可能需要不同的 分词策略。分词粒度太大,搜索召回率就会偏低,分词粒度太小,准确率就会降低。如何恰到好处的分词,是搜索引擎需要做的重要一步。
- 接着,搜索引擎需要对分词后的结果进行 词项处理,即对词语进行一些额外的操作,以提高搜索的效果。比如 归一化、词形还原、同义词扩展 等,这些操作可以消除一些词语之间的差异,增加索引的覆盖率和准确率。
- 最后,搜索引擎需要根据分词和词项处理后的结果 构建倒排索引,即一个 将词语映射到包含它们的文档列表的数据结构。倒排索引可以 快速 地根据用户输入的关键词,在索引库中检索出相关的文档,并 对文档进行相关度评价和排序。
其实 ,爬虫程序本身并不复杂,只要懂一点编程知识,了解一点 HTTP 和 HTML,就可以写出属于自己的爬虫,实现很多有意思的功能。
脚本 VS 爬虫
脚本 和 爬虫 是两个不同的概念,但是有一定的联系。
- 脚本 是一种 编程语言,用来编写一些简单的程序或指令,可以直接被解释器执行,不需要编译。
脚本语言 有很多种,比如 Python,Perl,Ruby,JavaScript 等。
- 爬虫 是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。
爬虫可以用 不同的编程语言 来实现,比如 Python,Java,C# 等。
Python:适合编写爬虫的脚本语言
Python 是一门易于学习、功能强大的编程语言。它提供了高效的高级数据结构,还能简单有效地面向对象编程。
- Python 优雅的语法和动态类型以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的理想语言。
Python 是一种 非常适合编写爬虫的脚本语言,因为它:
- 有丰富的网络抓取模块,比如
requests
,BeautifulSoup
,Scrapy
等。 - 也有 很强的数据处理和分析能力,可以 方便地提取和保存爬取的数据。
因此,Python 和爬虫有很密切的关系,很多人用 Python 来编写爬虫程序,也有很多教程和书籍介绍如何用 Python 来实现爬虫。
但是 Python 不等于爬虫,Python 还有很多其他的应用领域,比如 Web 开发,数据科学,人工智能等。
扩展阅读:一键科普 →Python的前世今生
Python 的哲学是优雅 、明确和简单。著名的 Python 之禅 这样写道:
优美胜于丑陋,
明了胜于晦涩,
简洁胜于复杂,
复杂胜于凌乱,
扁平胜于嵌套,
间隔胜于紧凑,
可读性很重要。
即便假借特例的实用性之名,也不可违背这些规则,
不要包容所有错误,除非你确定需要这样做,
当存在多种可能不要尝试去猜测,
而是尽量找一种,最好是唯一一种明显的解决方案,
虽然这并不容易,因为你不是 Python 之父。
做也许好过不做,但不假思索就动手还不如不做。
如果你无法向人描述你的方案,那肯定不是一个好方案;反之亦然。
命名空间是一种绝妙的理念,我们应当多加利用。
如何写 Python 爬虫
写爬虫 的过程可以分为以下几个步骤:
- 确定目标:明确要实现的功能,如爬取网页、处理数据、生成文件等。
- 分析网页:观察 要爬取的网页的结构和内容,找出需要提取的信息所在的标签和属性。
- 编写代码:使用 Python 语言和一些模块,如
requests
、BeautifulSoup
、pandas
等,编写符合规范和逻辑的代码,实现 抓取数据、解析数据、获取数据 等功能。 - 测试运行:保存并运行代码,检查是否能够正确地实现目标功能,如果出现错误或异常,进行调试和修改。
- 优化代码:根据需要,对代码进行优化和改进,如增加异常处理、增加注释、增加功能等。
核心是围绕这三点来写:抓取数据,解析数据,获取数据 !!!
- 抓取数据 就是通过 发送请求,获取网页的内容。
- 解析数据 就是通过使用一些工具,如
BeautifulSoup
,将网页内容转换为方便操作的对象。 - 获取数据 就是通过使用一些方法,如
find
或find_all
,从对象中提取我们需要的信息。
这三句可以组成一个基本的 爬虫脚本的框架,当然,根据不同的需求,还可以添加一些其他的功能,如 翻译、保存、处理 等。
VS Code 配置
VS Code 是一个相当优秀的 IDE ,具备开源、跨平台、模块化、插件丰富、启动时间快、颜值高、可高度定制等等优秀的特质,最近几年流行度也是越来越高。
01 软件准备
需要:
- Python 3
- VS Code
- VS Code Python extension
参考 Getting Started with Python in VS Code。
下面介绍 windows 系统下 Python 和 VS Code 的下载和安装。
Python 安装
从 Python 官网 下载 Python 进行安装,
首先,选择一个发行版本,这里选择 Python 3.11.5
,然后适用于 windows 系统的有两种 embeddable package
和 installer
,这里选择 installer
。
Python 官网上的
Windows embeddable package (64-bit)
和Windows installer (64-bit)
有两个主要的区别:
Windows embeddable package (64-bit)
是一个 zip 格式的压缩包,下载后解压即可使用 Python,不需要安装。这种方式适合于需要嵌入 Python 到其他应用程序中,或者需要在不同的目录下使用不同版本的 Python 的情况。Windows installer (64-bit)
是一个 exe 格式的可执行安装包,下载后需要运行安装程序,才能使用 Python。这种方式适合于普通用户,可以 方便地配置 Python 的环境变量,安装 pip 等工具,以及卸载 Python。一般来说,
- 如果是 Python 的初学者或者只需要使用一个版本的 Python,推荐使用
Windows installer (64-bit)
的方式安装 Python。- 如果是 Python 的高级用户或者有特殊的需求,可以考虑使用
Windows embeddable package (64-bit)
的方式使用 Python。
然后 installer
里面又分 32-bit
,64-bit
和 ARM64
。
ARM64
和x64
是两种不同的 处理器架构,它们有以下几个主要的区别:
ARM64
是基于ARM(Advanced RISC Machine)
的64位体系结构,而x64
是基于x86
的64位体系结构。
ARM
是一种RISC(Reduced Instruction Set Computer)
精简指令集,它的指令数量较少,但执行效率较高。x86
是一种CISC(Complex Instruction Set Computer)
复杂指令集,它的指令数量较多,但执行效率较低。
ARM64
和x64
的设计理念也不同。
ARM64
是为低功耗、高性能、高集成度的 移动设备 而设计的,它支持多种操作模式和指令集扩展,如 NEON、VFP 等。x64
是为高性能、高兼容性的 桌面和服务器设备 而设计的,它向下兼容x86
的32位和16位模式,支持多种指令集扩展,如 SSE、AVX等。
ARM64
和x64
的市场占有率也不同。
ARM64
主要应用于智能手机、平板电脑、物联网设备等领域,它占据了移动处理器市场的绝大部分份额。x64
主要应用于个人电脑、服务器、工作站等领域,它占据了桌面和服务器处理器市场的绝大部分份额。
这里同时按下 Win + R
调出 运行窗口,在里边输入 “cmd”
回车打开 命令提示符,
然后输入 systeminfo
命令,然后按 回车,此时就会显示出 电脑的详细信息,x64
表示 64位系统,x86
表示32位系统。
所以下载 Windows installer (64-bit)
,下载完成后双击 python-3.11.5-amd64.exe
文件。
Windows 系统中安装软件的路径一般是 C:\Program Files
(64-bit
的应用)和 C:\Program Files (x86)
(32-bit
的应用),所以不采用 Install Now
中的安装路径。
C:\Program Files
和C:\Program Files (x86)
这两个文件夹是 Windows 系统中用来存放安装的软件的地方。它们的区别是:
C:\Program Files
是用来 存放64位的软件 的,这些软件是专门为64位的系统和处理器设计的,它们可以充分利用系统的性能和资源,运行速度更快,功能更强大。C:\Program Files (x86)
是用来 存放32位的软件 的,这些软件是原本为32位的系统和处理器设计的,但是在64位的系统中也可以运行,这是因为64位的系统有一种兼容模式,可以模拟32位的环境,让32位的软件可以正常工作。但是,这些软件无法发挥64位系统的优势,运行速度可能会慢一些,功能也可能会受到限制。
- 如果电脑是64位的系统,那么在安装软件的时候,最好选择64位的版本,安装到
C:\Program Files
这个文件夹中,这样可以提高软件的性能和稳定性。- 如果只能找到32位的版本,也可以安装到
C:\Program Files (x86)
这个文件夹中,它们可能不会有最佳的表现。
安装 Python 的时候,会看到以下几个选项:
tcl/tk and IDLE
:这个选项是用来安装 tkinter 开发工具和 IDLE 交互环境的。
tkinter
是 Python 自带的 GUI(图形用户界面)编程库,可以用来创建窗口、按钮、菜单等图形元素。IDLE
是 Python 的 集成开发和学习环境,可以用来编写、运行和调试 Python 代码。
Python test suite
:这个选项用来 安装标准库测试套件。测试套件是一组用来检验 Python 代码是否正确运行的程序,可以用来测试 Python 的内置模块、语法、功能等。py launcher
:这个选项用来安装一个 可以运行 Python 脚本的工具。py launcher
可以在 Windows 系统中 方便地选择不同版本的 Python 解释器来执行 Python 文件,也可以 在命令行中直接输入py
命令来启动 Python。
这些选项 是否勾选,取决于需求和喜好。一般来说,
- 如果 只是想学习 Python 的基础知识,可以只勾选
pip
和py launcher
,这样就可以安装pip
包管理器 和py
启动器,方便下载和运行其他的 Python 包和文件。- 如果想学习 Python 的 GUI 编程,可以勾选
tcl/tk and IDLE
,这样就可以安装tkinter
库和IDLE
环境,方便 创建和测试图形界面。- 如果想学习 Python 的测试技术,可以勾选
Python test suite
,这样就可以安装 测试套件,方便 检验和改进代码。
对比下面两张图:
所以勾选 Install Python 3.11 for all users
选项,记得勾选 Add Python to environment variables
选项 (将 Python 添加到环境变量中),然后 Install
即可。
检查自己有没有安装 Python 以及 Python 版本号
- 在 Windows 系统中,你可以按
Win + R
键,输入cmd
,打开 命令提示符窗口。然后输入python -V
或python --version
,查看 当前系统默认的 Python 版本。
- 如果安装了多个 Python 版本,可以分别输入
python2 -V
或python3 -V
来查看不同版本的 Python。- 也可以输入
where python
来查看 Python 的安装路径。
- 在 Linux 或 Mac 系统中,你可以打开 终端(Terminal),输入
python -V
或python --version
,查看当前系统默认的 Python 版本。
- 如果安装了多个 Python 版本,可以分别输入
python2 -V
或python3 -V
来查看不同版本的 Python。- 也可以输入
which python
来查看 Python 的安装路径。
如果按照上述方法没有显示 Python 信息,记得 把 Python 解释器的路径添加到环境变量 中,安装 Python 的时候有个 “将 Python 添加到环境变量” 的选项可以勾选,如果没有勾选可以通过下面的方法 将 Python 手动添加到环境变量 中:
然后依次点击三个 “确定”,之后 重启电脑后生效,可以再次按照上述方法检验。
上图中环境变量中的两个 Python 的
Path
路径是安装 Python 时候自动添加的,
C:\Program Files\Python311
这个环境变量是用来 指定 Python 的安装路径 的,也就是说,这个文件夹里面 存放了 Python的解释器和标准库等文件。当在命令行中输入python
命令时,系统会在这个路径下寻找python.exe
文件来执行 Python 代码。(只要有这个环境变量就可以在终端用 Python 命令了)C:\Program Files\Python311\Scripts
这个环境变量是用来 指定 Python 的脚本路径 的,也就是说,这个文件夹里面存放了一些 Python 的工具和第三方包的可执行文件。当在命令行中输入pip
或其他工具的命令时,系统会在这个路径下寻找相应的.exe
文件来执行。
VS Code 安装
微软官方网站 下载并安装,VS Code 支持 Windows,Linux,Mac OS 三种操作系统。
选择 System Installer
中的 x64
(64位),
安装完成。
02 运行程序
运行 VS Code,首先 Open a folder
(打开一个文件夹,如果没有文件夹则新建一个文件夹,用于后续脚本文件存放),然后新建 ×××.py
脚本文件,在 ×××.py
文件里写 Python 代码。
可以在 VS Code 中通过使用 终端 (Terminal)直接运行 python 代码。
在 VS Code 的 python_script
文件夹下新建一个 ×××.py
文件,就可以敲 Python 代码了,然后启动终端, 在终端中通过输入 python xxx.py
来运行程序,
需要注意:
- 如果在终端中输入
python
没有变化,
记得 重启一下电脑,因为 环境变量中刚添加进了 python 的路径(可以安装 python 的时候选中“添加到路径”,也可以自己打开环境变量手动添加路径),可能还未生效。- 如果将 Python 添加到了环境变量,而且重启了电脑,在
cmd
中可以显示 Python 信息,但是 VS Code 中如上图所示,可以 重启 VS Code 再尝试即可。
- 如果这个 Python 脚本文件用到了其他文件如
xxx.csv
,那么要注意将这两个文件放在同一个目录下,然后cd
到该目录下执行python xxx.py
。
03 Python 插件
Python extension for Visual Studio Code
在 VS Code 中配置 Python 环境,第一个要安装的插件,就是 Python 插件。
Python 插件的全称是 Python extension for Visual Studio Code
,这是 VS Code 官方提供的 Python 插件,它是进行 Python 开发的基础扩展。它提供了代码编辑功能,支持 智能代码补全、代码片段、语法高亮、错误检查和代码导航等。
当你安装了这个插件,你会发现右键你的代码会比未安装前多出来几个选项。
Jupyter Notebook 支持
除了通常使用的 .py
文件外,对于数据科学而言,Jupyter Notebook 也是大家的重要选项。
因此,VS Code 中也提供了 Jupyter Notebook 的支持插件,在 VS Code 扩展市场中的名称是 Jupyter
。
04 VS Code 中的 python 环境
Python 中的“环境”是运行 Python 程序的上下文,该程序由解释器和任意数量的已安装包组成。
全局环境
默认情况下,安装的任何 Python 解释器都在自己的全局环境中运行。
例如,如果只是在一个新的终端上运行 python、python3或 py(取决于安装 python 的方式),那么是在该解释器的全局环境中运行的。
安装或卸载的任何程序包都会 影响全局环境以及在其中运行的所有程序。
局部环境
可以为工作区创建两种类型的环境:虚拟环境和 conda 环境。这些环境允许在不影响其他环境的情况下安装软件包,从而隔离工作区的软件包安装。
虚拟环境
虚拟环境是创建环境的一种内置方式。虚拟环境创建一个文件夹,其中包含到特定解释器的副本(或符号链接)。
将程序包安装到虚拟环境中时,它将最终位于此新文件夹中,从而与其他工作区使用的其他程序包隔离。
在 VS Code 中新建一个 Python 虚拟环境:
- 在项目目录打开 VS Code 终端:快捷键 Ctrl + ` 打开终端,或通过菜单 Terminal > New Terminal。
- 创建虚拟环境:输入命令
python -m venv .venv
,其中.venv
是虚拟环境的名称。 - 激活虚拟环境:命令激活
.venv\Scripts\activate
(Windows)source .venv/bin/activate
(macOS/Linux),或者直接把项目中上一步创建的\.venv\Scripts\activate.bat
拖拽到终端中,回车。
conda 环境
conda 环境是使用包管理器管理的 Python 环境。