Python爬虫请求库安装

请求库的安装

爬虫可以简单分为几步:抓取页面、分析页面和存储数据。

在抓取页面的过程中,我们需要模拟浏览器向服务器发出请求,所以需要用到一些 Python 库来实现 HTTP 请求操作。在本教程中,我们用到的第三方库有 requests、Selenium 和 aiohttp 等。

在本节中,我们介绍一下这些请求库的安装方法。

requests 的安装

由于 requests 属于第三方库,也就是 Python 默认不会自带这个库,所以需要我们手动安装。下面我们首先看一下它的安装过程。

1. 相关链接

  • GitHub:https://github.com/requests/requests

  • PyPI:https://pypi.python.org/pypi/requests

  • 官方文档:http://www.python-requests.org

  • 中文文档:http://docs.python-requests.org/zh_CN/latest

2. pip 安装

无论是 Windows、Linux 还是 Mac,都可以通过 pip 这个包管理工具来安装。

在命令行界面中运行如下命令,即可完成 requests 库的安装:

pip3 install requests

这是最简单的安装方式,推荐使用这种方法安装。

3. wheel 安装

wheel 是 Python 的一种安装包,其后缀为 .whl,在网速较差的情况下可以选择下载 wheel 文件再安装,然后直接用 pip3 命令加文件名安装即可。

不过在这之前需要先安装 wheel 库,安装命令如下:

pip3 install wheel

然后到 PyPI 上下载对应的 wheel 文件,如最新版本为 2.17.3,则打开:requests · PyPI,下载 requests-2.17.3-py2.py3-none-any.whl 到本地。

随后在命令行界面进入 wheel 文件目录,利用 pip 安装即可:

pip3 install requests-2.17.3-py2.py3-none-any.whl

这样我们也可以完成 requests 的安装。

4. 源码安装

如果你不想用 pip 来安装,或者想获取某一特定版本,可以选择下载源码安装。

此种方式需要先找到此库的源码地址,然后下载下来再用命令安装。

requests 项目的地址是:https://github.com/kennethreitz/requests

可以通过 Git 来下载源代码:

git clone git://github.com/kennethreitz/requests.git

或通过 curl 下载:

curl -OL https://github.com/kennethreitz/requests/tarball/master

下载下来之后,进入目录,执行如下命令即可安装:

cd requests
python3 setup.py install

命令执行结束后即可完成 requests 的安装。由于这种安装方式比较烦琐,后面不再赘述。

5. 验证安装

为了验证库是否已经安装成功,可以在命令行模式测试一下:

$ python3
>>> import requests

首先输入 python3,进入命令行模式,然后输入上述内容,如果什么错误提示也没有,就证明已经成功安装了 requests。

Selenium 的安装

Selenium 是一个自动化测试工具,利用它我们可以驱动浏览器执行特定的动作,如点击、下拉等操作。对于一些 JavaScript 渲染的页面来说,这种抓取方式非常有效。下面我们来看看 Selenium 的安装过程。

1. 相关链接

  • 官方网站:Selenium

  • GitHub:https://github.com/SeleniumHQ/selenium/tree/master/py

  • PyPI:selenium · PyPI

  • 官方文档:Selenium with Python — Selenium Python Bindings 2 documentation

  • 中文文档:Selenium with Python中文翻译文档 — Selenium-Python中文文档 2 documentation

2. pip 安装

这里推荐直接使用 pip 安装,执行如下命令即可:

pip3 install selenium

3. wheel 安装

此外,也可以到 PyPI 下载对应的 wheel 文件进行安装,下载地址为 selenium · PyPI,如最新版本为 3.4.3,则下载 selenium-3.4.3-py2.py3-none-any.whl 即可。

然后进入 wheel 文件目录,使用 pip 安装:

pip3 install selenium-3.4.3-py2.py3-none-any.whl

4. 验证安装

进入 Python 命令行交互模式,导入 Selenium 包,如果没有报错,则证明安装成功:

$ python3
>>> import selenium

但这样做还不够,因为我们还需要用浏览器(如 Chrome、Firefox 等)来配合 Selenium 工作。

后面我们会介绍 Chrome、Firefox、PhantomJS 三种浏览器的配置方式。有了浏览器,我们才可以配合 Selenium 进行页面的抓取。

ChromeDriver 的安装

前面我们成功安装好了 Selenium 库,但是它是一个自动化测试工具,需要浏览器来配合使用,本节中我们就介绍一下 Chrome 浏览器及 ChromeDriver 驱动的配置。

首先,下载 Chrome 浏览器,方法有很多,在此不再赘述。

随后安装 ChromeDriver。因为只有安装 ChromeDriver,才能驱动 Chrome 浏览器完成相应的操作。下面我们来介绍下怎样安装 ChromeDriver。

1. 相关链接

  • 官方网站:https://sites.google.com/a/chromium.org/chromedriver

  • 下载地址:https://chromedriver.storage.googleapis.com/index.html

2. 准备工作

在这之前请确保已经正确安装好了 Chrome 浏览器并可以正常运行,安装过程不再赘述。

3. 查看版本

点击 Chrome 菜单 “帮助”→“关于 Google Chrome”,即可查看 Chrome 的版本号,如图

edeab89ec0b0428683f228ccb073f8be.png

这里我的 Chrome 版本是 58.0。

请记住 Chrome 版本号,因为选择 ChromeDriver 版本时需要用到。

4. 下载 ChromeDriver

打开 ChromeDriver 的官方网站,可以看到最新版本为 2.31,其支持的 Chrome 浏览器版本为 58~60,官网页面如图。

b7384c6250c4418c9b6223d9b1647cf0.png

 

如果你的 Chrome 版本号是 58~60,那么可以选择此版本下载。

如果你的 Chrome 版本号不在此范围,可以继续查看之前的 ChromeDriver 版本。每个版本都有相应的支持 Chrome 版本的介绍,请找好自己的 Chrome 浏览器版本对应的 ChromeDriver 版本再下载,否则可能无法正常工作。

找好对应的版本号后,随后到 ChromeDriver 镜像站下载对应的安装包即可,链接为 https://chromedriver.storage.googleapis.com/index.html。在不同平台下,可以下载不同的安装包。

5. 环境变量配置

下载完成后,将 ChromeDriver 的可执行文件配置到环境变量下。

在 Windows 下,建议直接将 chromedriver.exe 文件拖到 Python 的 Scripts 目录下,如图所示。

dfb85f98cb944fbbbb8c06804b832c7d.png

 

此外,也可以单独将其所在路径配置到环境变量。

在 Linux 和 Mac 下,需要将可执行文件配置到环境变量或将文件移动到属于环境变量的目录里。

例如,要移动文件到 /usr/bin 目录。首先,需要在命令行模式下进入其所在路径,然后将其移动到 /usr/bin 目录:

sudo mv chromedriver /usr/bin

另外,如果你的系统是 Mac OS X El Capitan 10.11 及更新的系统版本的话,需要先关闭 Rootless 内核保护机制,具体可参考:苹果OSX 10.11关闭rootless内核保护教程_Mac关闭rootless教程 _pc6苹果网MAC资讯。

当然,也可以将 ChromeDriver 配置到 $PATH。首先,可以将可执行文件放到某一目录,目录可以任意选择,例如将当前可执行文件放在 /usr/local/chromedriver 目录下,接下来在 Linux 下可以修改~/.profile 文件,在 Mac 下可以修改~/.bash_profile 文件,添加如下内容:

export PATH="$PATH:/usr/local/chromedriver"

保存后在 Linux 下执行如下命令:

source ~/.profile

在 Mac 下执行如下命令:

source ~/.bash_profile

即可完成环境变量的添加。

6. 验证安装

配置完成后,就可以在命令行下直接执行 chromedriver 命令了:

chromedriver

控制台所示的输出,则证明 ChromeDriver 的环境变量配置好了。

455880c67f324a7f97180ac0ded8eee4.png

 

随后再在程序中测试。执行如下 Python 代码:

from selenium import webdriver
browser = webdriver.Chrome()

运行之后,如果弹出一个空白的 Chrome 浏览器,则证明所有的配置都没有问题。如果没有弹出,请检查之前的每一步配置。

如果弹出后闪退,则可能是 ChromeDriver 版本和 Chrome 版本不兼容,请更换 ChromeDriver 版本。

如果没有问题,接下来就可以利用 Chrome 来做网页抓取了。

GeckoDriver 的安装

上一节中,我们了解了 ChromeDriver 的配置方法,配置完成之后便可以用 Selenium 驱动 Chrome 浏览器来做相应网页的抓取。

那么对于 Firefox 来说,也可以使用同样的方式完成 Selenium 的对接,这时需要安装另一个驱动 GeckoDriver。

本节中,我们来介绍一下 GeckoDriver 的安装过程。

1. 相关链接

  • GitHub:https://github.com/mozilla/geckodriver

  • 下载地址:https://github.com/mozilla/geckodriver/releases

2. 准备工作

在这之前请确保已经正确安装好了 Firefox 浏览器并可以正常运行,安装过程不再赘述。

3. 下载 GeckoDriver

我们可以在 GitHub 上找到 GeckoDriver 的发行版本,当前最新版本为 0.18,下载页面如图所示。

GeckoDriver 下载页面

c8ef84d85cb148d9ba722a63d2f24754.png

 

这里可以在不同的平台上下载,如 Windows、Mac、Linux、ARM 等平台,我们可以根据自己的系统和位数选择对应的驱动下载,若是 Windows 64 位,就下载 geckodriver-v0.18.0-win64.zip。

4. 环境变量配置

在 Windows 下,可以直接将 geckodriver.exe 文件拖到 Python 的 Scripts 目录下,如图所示。

0c0067cd5d024835bfc066cb30c80376.png

将 geckodriver.exe 文件拖到 Python Scripts 目录

 

此外,也可以单独将其所在路径配置到环境变量

在 Linux 和 Mac 下,需要将可执行文件配置到环境变量或将文件移动到属于环境变量的目录里。

例如,要移动文件到 /usr/bin 目录。首先在命令行模式下进入其所在路径,然后将其移动到 /usr/bin:

sudo mv geckodriver /usr/bin

当然,也可以将 GeckoDriver 配置到 $PATH。首先,可以将可执行文件放到某一目录,目录可以任意选择,例如将当前可执行文件放在 /usr/local/geckodriver 目录下。接下来可以修改~/.profile 文件,然后添加如下一句配置:

export PATH="$PATH:/usr/local/geckodriver"

保存后执行如下命令即可完成配置:

source ~/.profile

5. 验证安装

配置完成后,就可以在命令行下直接执行 geckodriver 命令测试:

geckodriver

控制所示的输出,则证明 GeckoDriver 的环境变量配置好了。

控制台输出

56750bc607d94c5b97ea8ed086d717fe.png

随后执行如下 Python 代码。在程序中测试一下:

from selenium import webdriver  
browser = webdriver.Firefox()

运行之后,若弹出一个空白的 Firefox 浏览器,则证明所有的配置都没有问题;如果没有弹出,请检查之前的每一步配置。

如果没有问题,接下来就可以利用 Firefox 配合 Selenium 来做网页抓取了。

现在我们就可以使用 Chrome 或 Firefox 进行网页抓取了,但是这样可能有个不方便之处:因为程序运行过程中需要一直开着浏览器,在爬取网页的过程中浏览器可能一直动来动去。目前最新的 Chrome 浏览器版本已经支持无界面模式了,但如果版本较旧的话,就不支持。所以这里还有另一种选择,那就是安装一个无界面浏览器 PhantomJS,此时抓取过程会在后台运行,不会再有窗口出现。在下一节中,我们就来了解一下 PhantomJS 的相关安装方法。

PhantomJS 的安装

PhantomJS 是一个无界面的、可脚本编程的 WebKit 浏览器引擎,它原生支持多种 Web 标准:DOM 操作、CSS 选择器、JSON、Canvas 以及 SVG。

Selenium 支持 PhantomJS,这样在运行的时候就不会再弹出一个浏览器了。而且 PhantomJS 的运行效率也很高,还支持各种参数配置,使用非常方便。下面我们就来了解一下 PhantomJS 的安装过程。

1. 相关链接

  • 官方网站:PhantomJS - Scriptable Headless Browser

  • 官方文档:Quick Start with PhantomJS

  • 下载地址:Download PhantomJS

  • API 接口说明:Command Line Interface | PhantomJS

2. 下载 PhantomJS

我们需要在官方网站下载对应的安装包,PhantomJS 支持多种操作系统,比如 Windows、Linux、Mac、FreeBSD 等,我们可以选择对应的平台并将安装包下载下来。

下载完成后,将 PhantomJS 可执行文件所在的路径配置到环境变量里。比如在 Windows 下,将下载的文件解压之后并打开,会看到一个 bin 文件夹,里面包括一个可执行文件 phantomjs.exe,我们需要将它直接放在配置好环境变量的路径下或者将它所在的路径配置到环境变量里。比如,我们既可以将它直接复制到 Python 的 Scripts 文件夹,也可以将它所在的 bin 目录加入到环境变量。

Windows ,Linux 及 Mac 环境变量的配置自行安装,关键在于将 PhantomJS 的可执行文件所在路径配置到环境变量里。

配置成功后,可以在命令行下测试一下,输入:

phantomjs

如果可以进入到 PhantomJS 的命令行,那就证明配置完成了,如图 所示。

f9e7fd16638541508202f2d2a7af13e8.png

 

3. 验证安装

在 Selenium 中使用的话,我们只需要将 Chrome 切换为 PhantomJS 即可:

from selenium import webdriver
browser = webdriver.PhantomJS()
browser.get('https://www.baidu.com')
print(browser.current_url)

运行之后,我们就不会发现有浏览器弹出了,但实际上 PhantomJS 已经运行起来了。这里我们访问了百度,然后将当前的 URL 打印出来。

控制台的输出如下:

https://www.baidu.com/

如此一来,我们便完成了 PhantomJS 的配置,后面可以利用它来完成一些页面的抓取。

这里我们介绍了 Selenium 对应的三大主流浏览器的对接方式,后面我们会对 Selenium 及各个浏览器的对接方法进行更加深入的探究。

aiohttp 的安装

之前介绍的 requests 库是一个阻塞式 HTTP 请求库,当我们发出一个请求后,程序会一直等待服务器响应,直到得到响应后,程序才会进行下一步处理。其实,这个过程比较耗费时间。如果程序可以在这个等待过程中做一些其他的事情,如进行请求的调度、响应的处理等,那么爬取效率一定会大大提高。

aiohttp 就是这样一个提供异步 Web 服务的库,从 Python 3.5 版本开始,Python 中加入了 async/await 关键字,使得回调的写法更加直观和人性化。aiohttp 的异步操作借助于 async/await 关键字的写法变得更加简洁,架构更加清晰。使用异步请求库进行数据抓取时,会大大提高效率,下面我们来看一下这个库的安装方法。

1. 相关链接

  • 官方文档:Welcome to AIOHTTP — aiohttp 3.9.1 documentation

  • GitHub:https://github.com/aio-libs/aiohttp

  • PyPI:aiohttp · PyPI

2. pip 安装

这里推荐使用 pip 安装,命令如下:

pip3 install aiohttp

另外,官方还推荐安装如下两个库:一个是字符编码检测库 cchardet,另一个是加速 DNS 的解析库 aiodns。安装命令如下:

pip3 install cchardet aiodns

3. 测试安装

安装完成之后,可以在 Python 命令行下测试:

$ python3
>>> import aiohttp

如果没有错误报出,则证明库已经安装好了。

我们会在后面的实例中用到这个库,比如维护一个代理池时,利用异步方式检测大量代理的运行状况,会极大地提升效率。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/355407.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[嵌入式软件][启蒙篇][仿真平台] STM32F103实现SPI控制OLED屏幕

上一篇: [嵌入式软件][启蒙篇][仿真平台] STM32F103实现LED、按键 [嵌入式软件][启蒙篇][仿真平台] STM32F103实现串口输出输入、ADC采集 [嵌入式软件][启蒙篇][仿真平台]STM32F103实现定时器 [嵌入式软件][启蒙篇][仿真平台] STM32F103实现IIC控制OLED屏幕 文章目…

【微服务】springboot集成ELK使用详解

目录 一、前言 二、为什么需要ELK 三、ELK介绍 3.1 什么是elk 3.2 elk工作原理 四、ELK环境搭建 4.1 搭建es环境 4.1.1 获取es镜像 4.1.2 启动es容器 2.1.3 配置es参数 2.1.4 重启es容器并访问 4.2 搭建kibana 4.2.1 拉取kibana镜像 4.2.2 启动kibana容器 4.2.3 …

第八篇【传奇开心果短博文系列】Python的OpenCV技术点案例示例:深度学习

传奇开心果短博文系列 系列短博文目录Python的OpenCV技术点案例示例系列 短博文目录一、前言二、OpenCV深度学习介绍三、OpenCV常用深度学习算法和实现分别示例代码四、归纳总结 系列短博文目录 Python的OpenCV技术点案例示例系列 短博文目录 一、前言 OpenCV深度学习&…

【Android】MediaCodec学习

在开源Android屏幕投屏代码scrcpy中,使用了MediaCodec去获取和display关联的surface的内容,再通过写fd的方式(socket等)传给PC端, MediaCodec的处理看起来比较清楚,数据in和数据out 这里我们做另外一个尝试…

SharedPreferences卡顿分析

SP的使用及存在的问题 SharedPreferences(以下简称SP)是Android本地存储的一种方式,是以key-value的形式存储在/data/data/项目包名/shared_prefs/sp_name.xml里,SP的使用示例及源码解析参见:Android本地存储之SharedPreferences源码解析。以…

ASP .NET Core Api 使用过滤器

过滤器说明 过滤器与中间件很相似,过滤器(Filters)可在管道(pipeline)特定阶段(particular stage)前后执行操作。可以将过滤器视为拦截器(interceptors)。 过滤器级别范围…

第二证券:外围突传大利好!看涨期权交易骤增,中国资产大反攻继续?

外资正在做多我国财物。 据海外买卖网站marketchameleon的最新数据显现,海外挂钩追寻我国股票的iShares我国大型股ETF(FXI)的看涨期权买卖量在近一周内出现骤增,到达一年多来的最高点。别的,专心于科技范畴的KraneShares CSI我国互联网ETF&a…

开源之力与GPT的碰撞:探索未来技术的无限可能

摘要: 在本文中,我们将探讨开源软件与GPT(大型预训练语言模型)的完美结合如何推动技术的飞速发展。我们将简要介绍开源文化的价值观及其对技术创新的影响,分析GPT系列模型在开源社区中的发展与应用,并通过代…

STM32控制DS18B20温度传感器获取温度

时间记录:2024/1/28 一、DS18B20温度传感器介绍 (1)测温范围-55℃~125℃,在-10℃到85℃范围内误差为0.4 (2)返回的温度数据为16位二进制数据 (3)STM32和DS18B20通信使用单总线协议…

Linux下安装Nginx及配置SSL证书

安装 Nginx nginx 的一些模块需要依赖一些 lib 库,在安装 nginx 之前,须先安装这些 lib 库,比如常见依赖库主要有g、gcc、openssl-devel、pcre-devel和zlib-devel 所以执行如下命令安装: $ yum install gcc-c pcre pcre-devel z…

node后端服务框架

前言: 随着互联网的快速发展,Web 开发已成为当今计算机领域中非常重要的一部分。 Node.js 的出现为前端开发者提供了一个全新的方向,使得他们可以同时涉足前端和后端开发。Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时&#xff…

批量导出域控用户及其所在OU和组

在Windows域环境中,批量导出域控用户及其所在OU(组织单位)和组成员身份信息,可以使用PowerShell脚本实现。以下是一个基本的示例脚本: Import-Module ActiveDirectory# 遍历所有用户 Get-ADUser -Filter * -Propertie…

数组奇缘:林浩然与杨凌芸的Java编程冒险记

数组奇缘:林浩然与杨凌芸的Java编程冒险记 Array Odyssey: The Java Programming Adventure of Lin Haoran and Yang Lingyun 在Java编程的广阔天地中,林浩然和杨凌芸的故事如同一段奇妙而生动的冒险传奇。林浩然,一个对代码充满热情、逻辑严…

python16-Python的字符串之转义字符

.前面已经提到,在字符串中可以使用反斜线进行转义;如果字符串本身包含反斜线,则需要使用“”表示,“W”就是转义字符。Python当然不会只支持这么几个转义字符,Python支持的转义字符如下表 掌握了上面的转义字符之后,下…

互斥锁/读写锁的概念及使用、死锁的避免

互斥锁的概念和使用 线程通信-互斥 临界资源:一次只允许一个任务(进程、线程)访问的共享资源 临界区:访问临界资源的代码 互斥机制:mutex互斥锁,任务访问临界资源前申请锁,访问完后释放锁互斥锁初始化 两种方法创建互…

中科星图——MODIS/006/MYD13A1的MYD13A1.006类数据集

数据名称: MYD13A1.006 Modis 16天 Aqua 500m 数据来源: NASA 时空范围: 2000-2022年 空间范围: 全国 数据简介: MOD13A1 V6数据集是由Aqua星搭载的中分辨率成像光谱仪获取的L3级植被指数产品&#xff0c…

三角函数转换(积分必备)

目录 一、诱导公式 二、二角和差公式 三、积化和差公式 四、万能、辅助角公式 五、倍角公式 六、反三角函数 七、余弦定理 一、诱导公式 1.公式一:设α为任意角,πα的三角函数值与α的三角函数值之间的关系 sin(π A) =-s…

《向量数据库指南》——Milvus Cloud向量过滤搜索及其优化

向量过滤搜索是一种基于条件的向量搜索方法,常用于推荐系统和信息检索等领域,能够帮助用户快速找到在给定条件下与其查询相关的内容。 在 Milvus Cloud社区中,这也是呼声比较高的功能。为满足广大用户的需求,Milvus Cloud在 Knowh…

王殿华主任:中医对睡眠的认知与睡眠障碍分类

睡眠不足不仅会导致黑眼圈,还会带来许多健康风险。怎样才能睡得更好? 一、睡眠障碍的分类 失眠症呼吸系统相关睡眠障碍;中枢多发性睡眠;睡眠节律紊乱;睡眠异常;睡眠运动障碍;其他睡眠障碍。 失…

CSS3的学习笔记

CSS3的学习笔记 什么是css: CSS是层叠样式表(Cascading Style Sheets)的缩写,是一种用来描述网页样式和布局的标记语言。它可以控制网页中的文字大小、颜色、间距、背景、边框、布局等方面,使网页更加美观和易于阅读。通过CSS&a…