人生苦短, 我用 Python
前文传送门:
小白学 Python 爬虫 (1): 开篇 https://www.geekdigging.com/2019/11/13/3303836941/
本篇内容较长, 各位同学可以先收藏后再看~~
在开始讲爬虫之前, 还是先把环境搞搞好, 工欲善其事必先利其器嘛~~~
本篇文章主要介绍 Python 爬虫所使用到的请求库和解析库, 请求库用来请求目标内容, 解析库用来解析请求回来的内容.
开发环境
首先介绍小编本地的开发环境:
- Python3.7.4
- win10
差不多就这些, 最基础的环境, 其他环境需要我们一个一个安装, 现在开始.
请求库
虽然 Python 为我们内置了 HTTP 请求库 urllib , 使用姿势并不是很优雅, 但是很多第三方的提供的 HTTP 库确实更加的简洁优雅, 我们下面开始.
Requests
Requests 类库是一个第三方提供的用于发送 HTTP 同步请求的类库, 相比较 Python 自带的 urllib 类库更加的方便和简洁.
Python 为我们提供了包管理工具 pip , 使用 pip 安装将会非常的方便, 安装命令如下:
pip install requests
验证:
- C:\Users\inwsy>python
- Python 3.7.4 (tags/v3.7.4:e09359112e, Jul 8 2019, 20:34:20) [MSC v.1916 64 bit (AMD64)] on win32
- Type "help", "copyright", "credits" or "license" for more information.
- >>> import requests
首先在 CMD 命令行中输入 python , 进入 python 的命令行模式, 然后输入 import requests 如果没有任何错误提示, 说明我们已经成功安装 Requests 类库.
Selenium
Selenium 现在更多的是用来做自动化测试工具, 相关的书籍也不少, 同时, 我们也可以使用它来做爬虫工具, 毕竟是自动化测试么, 利用它我们可以让浏览器执行我们想要的动作, 比如点击某个按钮, 滚动滑轮之类的操作, 这对我们模拟真实用户操作是非常方便的.
安装命令如下:
pip install selenium
验证:
- C:\Users\inwsy>python
- Python 3.7.4 (tags/v3.7.4:e09359112e, Jul 8 2019, 20:34:20) [MSC v.1916 64 bit (AMD64)] on win32
- Type "help", "copyright", "credits" or "license" for more information.
- >>> import selenium
这样没报错我们就安装完成, 但是你以为这样就算好了么? 图样图森破啊.
ChromeDriver
我们还需要浏览器的支持来配合 selenium 的工作, 开发人员嘛, 常用的浏览器莫非那么几种: Chrome,Firefox, 那位说 IE 的同学, 你给我站起来, 小心我跳起来打你膝盖, 还有说 360 浏览器的, 你们可让我省省心吧.
接下来, 安装 Chrome 浏览器就不用讲了吧....
再接下来, 我们开始安装 ChromeDriver , 安装了 ChromeDriver 后, 我们才能通过刚才安装的 selenium 来驱动 Chrome 来完成各种骚操作.
首先, 我们需要查看自己的 Chrome 浏览器的版本, 在 Chrome 浏览器右上角的三个点钟, 点击 帮助 -> 关于, 如下图:
将这个版本找个小本本记下来, 小编这里的版本为: 版本 78.0.3904.97(正式版本) (64 位)
接下来我们需要去 ChromeDriver 的官网查看当前 Chrome 对应的驱动.
官网地址:
因某些原因, 访问时需某些手段, 访问不了的就看小编为大家准备的版本对应表格吧...
ChromeDriver Version | Chrome Version |
---|---|
78.0.3904.11 | 78 |
77.0.3865.40 | 77 |
77.0.3865.10 | 77 |
76.0.3809.126 | 76 |
76.0.3809.68 | 76 |
76.0.3809.25 | 76 |
76.0.3809.12 | 76 |
75.0.3770.90 | 75 |
75.0.3770.8 | 75 |
74.0.3729.6 | 74 |
73.0.3683.68 | 73 |
72.0.3626.69 | 72 |
2.46 | 71-73 |
2.45 | 70-72 |
2.44 | 69-71 |
2.43 | 69-71 |
2.42 | 68-70 |
2.41 | 67-69 |
2.40 | 66-68 |
2.39 | 66-68 |
2.38 | 65-67 |
2.37 | 64-66 |
2.36 | 63-65 |
2.35 | 62-64 |
顺便小编找到了国内对应的下载的镜像站, 由淘宝提供, 如下:
http://npm.taobao.org/mirrors/chromedriver
虽然和小编本地的小版本对不上, 但是看样子只要大版本符合应该没啥问题, so, 去镜像站下载对应的版本即可, 小编这里下载的版本是: 78.0.3904.70 ,ChromeDriver 78 版本的最后一个小版本.
下载完成后, 将可执行文件 chromedriver.exe 移动至 Python 安装目录的 Scripts 目录下. 如果使用默认安装未修改过安装目录的话目录是:%homepath%\AppData\Local\Programs\Python\Python37\Scripts , 如果有过修改, 那就自力更生吧...
将 chromedriver.exe 添加后结果如下图:
验证:
还是在 CMD 命令行中, 输入以下内容:
- C:\Users\inwsy>python
- Python 3.7.4 (tags/v3.7.4:e09359112e, Jul 8 2019, 20:34:20) [MSC v.1916 64 bit (AMD64)] on win32
- Type "help", "copyright", "credits" or "license" for more information.
- >>> from selenium import webdriver
- >>> browser = webdriver.Chrome()
如果打开一个空白的 Chrome 页面说明安装成功.
GeckoDriver
上面我们通过安装 Chrome 的驱动完成了 Selenium 与 Chrome 的对接, 想要完成 Selenium 与 Firefox 的对接则需要安装另一个驱动 GeckoDriver .
Firefox 的安装小编这里就不介绍了, 大家最好去官网下载安装, 路径如下:
Firefox 官网地址: http://www.firefox.com.cn/
GeckoDriver 的下载需要去 GitHub (全球最大的同性交友网站), 下载路径小编已经找好了, 可以选择最新的 releases 版本进行下载.
下载地址: https://github.com/mozilla/geckodriver/releases
选择对应自己的环境, 小编这里选择 win-64 , 版本为 v0.26.0 进行下载.
具体配置方式和上面一样, 将可执行的 .exe 文件放入 %homepath%\AppData\Local\Programs\Python\Python37\Scripts 目录下即可.
验证:
还是在 CMD 命令行中, 输入以下内容:
- C:\Users\inwsy>python
- Python 3.7.4 (tags/v3.7.4:e09359112e, Jul 8 2019, 20:34:20) [MSC v.1916 64 bit (AMD64)] on win32
- Type "help", "copyright", "credits" or "license" for more information.
- >>> from selenium import webdriver
- >>> browser = webdriver.Firefox()
应该是可以正常打开一个空白的 Firefox 页面的, 结果如下:
注意: GeckoDriver 指出一点, 当前的版本在 win 下使用有已知 bug , 需要安装微软的一个插件才能解决, 原文如下:
You must still have the Microsoft Visual Studio redistributable runtime installed on your system for the binary to run. This is a known bug which we weren't able fix for this release.
插件下载地址:
请各位同学选择自己对应的系统版本进行下载安装.
Aiohttp
上面我们介绍了同步的 Http 请求库 Requests , 而 Aiohttp 则是一个提供异步 Http 请求的类库.
那么, 问题来了, 什么是同步请求? 什么是异步请求呢?
同步: 阻塞式, 简单理解就是当发出一个请求以后, 程序会一直等待这个请求响应, 直到响应以后, 才继续做下一步.
异步: 非阻塞式, 还是上面的例子, 当发出一个请求以后, 程序并不会阻塞在这里, 等待请求响应, 而是可以去做其他事情.
从资源消耗和效率上来说, 同步请求是肯定比不过异步请求的, 这也是为什么异步请求会比同步请求拥有更大的吞吐量. 在抓取数据时使用异步请求, 可以大大提升抓取的效率.
如果还想了解跟多有关 aiohttp 的内容, 可以访问官方文档: https://aiohttp.readthedocs.io/en/stable/ .
aiohttp 安装如下:
pip install aiohttp
aiohttp 还推荐我们安装另外两个库, 一个是字符编码检测库 cchardet , 另一个是加速 DNS 的解析库 aiodns .
安装 cchardet 库:
pip install cchardet
安装 aiodns 库:
pip install aiodns
aiohttp 十分贴心的为我们准备了整合的安装命令, 无需一个一个键入命令, 如下:
pip install aiohttp[speedups]
验证:
- C:\Users\inwsy>python
- Python 3.7.4 (tags/v3.7.4:e09359112e, Jul 8 2019, 20:34:20) [MSC v.1916 64 bit (AMD64)] on win32
- Type "help", "copyright", "credits" or "license" for more information.
- >>> import aiohttp
没报错就安装成功.
解析库
lxml
lxml 是 Python 的一个解析库, 支持 html 和 xml 的解析, 支持 XPath 的解析方式, 而且解析效率非常高.
什么是 XPath ?
XPath 即为 xml 路径语言 (xml Path Language), 它是一种用来确定 xml 文档中某部分位置的语言.
XPath 基于 xml 的树状结构, 提供在数据结构树中找寻节点的能力. 起初 XPath 的提出的初衷是将其作为一个通用的, 介于 XPointer 与 XSL 间的语法模型.
以上内容来源《百度百科》
好吧, 小编说人话, 就是可以从 xml 文档或者 HTML 文档中快速的定位到所需要的位置的路径语言.
还没看懂? emmmmmmmmmmm, 我们可以使用 XPath 快速的取出 xml 或者 HTML 文档中想要的值. 用法的话我们放到后面再聊.
安装 lxml 库:
pip install lxml
验证:
- C:\Users\inwsy>python
- Python 3.7.4 (tags/v3.7.4:e09359112e, Jul 8 2019, 20:34:20) [MSC v.1916 64 bit (AMD64)] on win32
- Type "help", "copyright", "credits" or "license" for more information.
- >>> import lxml
没报错就安装成功.
Beautiful Soup
Beautiful Soup 同样也是一个 Python 的 HTML 或 xml 的解析库 . 它拥有强大的解析能力, 我们可以使用它更方便的从 HTML 文档中提取数据.
首先, 放一下 Beautiful Soup 的官方网址, 有各种问题都可以在官网查看文档, 各位同学养成一个好习惯, 有问题找官方文档, 虽然是英文的, 使用 Chrome 自带的翻译功能还是勉强能看的.
官方网站: https://www.crummy.com/software/BeautifulSoup/
安装方式依然使用 pip 进行安装:
pip install beautifulsoup4
Beautiful Soup 的 HTML 和 xml 解析器是依赖于 lxml 库的, 所以在此之前请确保已经成功安装好了 lxml 库 .
验证:
- C:\Users\inwsy>python
- Python 3.7.4 (tags/v3.7.4:e09359112e, Jul 8 2019, 20:34:20) [MSC v.1916 64 bit (AMD64)] on win32
- Type "help", "copyright", "credits" or "license" for more information.
- >>> from bs4 import BeautifulSoup
没报错就安装成功.
pyquery
pyquery 同样也是一个网页解析库, 只不过和前面两个有区别的是它提供了类似 jQuery 的语法来解析 HTML 文档, 前端有经验的同学应该会非常喜欢这款解析库.
首先还是放一下 pyquery 的官方文档地址.
官方文档: https://pyquery.readthedocs.io/en/latest/
安装:
pip install pyquery
验证:
- C:\Users\inwsy>python
- Python 3.7.4 (tags/v3.7.4:e09359112e, Jul 8 2019, 20:34:20) [MSC v.1916 64 bit (AMD64)] on win32
- Type "help", "copyright", "credits" or "license" for more information.
- >>> import pyquery
没报错就安装成功.
本篇的内容就先到这里结束了. 请各位同学在自己的电脑上将上面介绍的内容都安装一遍, 以便后续学习使用.
来源: https://www.cnblogs.com/babycomeon/p/11909567.html