在本章中,让我们学习各种可用于Web抓取的Python模块.
使用virtualenv的Python开发环境
Virtualenv是用于创建隔离的Python环境的工具.在virtualenv的帮助下,我们可以创建一个包含所有必需可执行文件的文件夹,以使用我们的Python项目所需的包.它还允许我们在不访问全局安装的情况下添加和修改Python模块.
您可以使用以下命令安装 virtualenv :
(base) D:\ProgramData>pip install virtualenvCollecting virtualenv Downloadinghttps://files.pythonhosted.org/packages/b6/30/96a02b2287098b23b875bc8c2f58071c35d2efe84f747b64d523721dc2b5/virtualenv-16.0.0-py2.py3-none-any.whl(1.9MB) 100% |¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 1.9MB 86kB/sInstalling collected packages: virtualenvSuccessfully installed virtualenv-16.0.0
现在,我们需要创建一个在以下命令和减号的帮助下代表项目的目录;
(base) D:\ProgramData>mkdir webscrap
现在,在以下命令的帮助下进入该目录 :
(base) D:\ProgramData>cd webscrap
现在,我们需要初始化我们选择的虚拟环境文件夹,如下所示;
(base) D:\ProgramData\webscrap>virtualenv webscUsing base prefix 'd:\\programdata'New python executable in D:\ProgramData\webscrap\websc\Scripts\python.exeInstalling setuptools, pip, wheel...done.
现在,使用下面给出的命令激活虚拟环境.成功激活后,您将在括号的左侧看到它的名称.
(base) D:\ProgramData\webscrap>websc\scripts\activate
我们可以在此环境中安装任何模块,如下所示 :
(websc) (base) D:\ProgramData\webscrap>pip install requestsCollecting requests Downloadinghttps://files.pythonhosted.org/packages/65/47/7e02164a2a3db50ed6d8a6ab1d6d60b69c4c3fdf57a284257925dfc12bda/requests-2.19.1-py2.py3-none-any.whl (91kB) 100% |¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 92kB 148kB/sCollecting chardet<3.1.0,>=3.0.2 (from requests) Downloadinghttps://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl (133kB) 100% |¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 143kB 369kB/sCollecting certifi>=2017.4.17 (from requests) Downloadinghttps://files.pythonhosted.org/packages/df/f7/04fee6ac349e915b82171f8e23cee63644d83663b34c539f7a09aed18f9e/certifi-2018.8.24-py2.py3-none-any.whl(147kB) 100% |¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 153kB 527kB/sCollecting urllib3<1.24,>=1.21.1 (from requests) Downloadinghttps://files.pythonhosted.org/packages/bd/c9/6fdd990019071a4a32a5e7cb78a1d92c53851ef4f56f62a3486e6a7d8ffb/urllib3-1.23-py2.py3-none-any.whl (133kB) 100% |¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 143kB 517kB/sCollecting idna<2.8,>=2.5 (from requests) Downloadinghttps://files.pythonhosted.org/packages/4b/2a/0276479a4b3caeb8a8c1af2f8e4355746a97fab05a372e4a2c6a6b876165/idna-2.7-py2.py3-none-any.whl (58kB) 100% |¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 61kB 339kB/sInstalling collected packages: chardet, certifi, urllib3, idna, requestsSuccessfully installed certifi-2018.8.24 chardet-3.0.4 idna-2.7 requests-2.19.1urllib3-1.23
为了停用虚拟环境,我们可以使用以下命令 :
(websc) (base) D:\ProgramData\webscrap>deactivate(base) D:\ProgramData\webscrap>
你可以看到(websc)已被停用.
用于网页搜刮的Python模块
网页抓取是构建的过程可以自动从Web提取,解析,下载和组织有用信息的代理.换句话说,网络抓取软件不是手动保存网站数据,而是根据我们的要求自动从多个网站加载和提取数据.
在本节中,我们将讨论用于Web抓取的有用Python库.
请求
这是一个简单的python web抓取库.它是一个用于访问网页的高效HTTP库.在请求的帮助下,我们可以获取网页的原始HTML,然后可以对其进行解析以检索数据.在使用请求之前,让我们了解它的安装.
安装请求
我们可以在虚拟环境中安装它环境或全局安装.在 pip 命令的帮助下,我们可以轻松安装如下 :
(base) D:\ProgramData> pip install requestsCollecting requestsUsing cachedhttps://files.pythonhosted.org/packages/65/47/7e02164a2a3db50ed6d8a6ab1d6d60b69c4c3fdf57a284257925dfc12bda/requests-2.19.1-py2.py3-none-any.whlRequirement already satisfied: idna<2.8,>=2.5 in d:\programdata\lib\sitepackages(from requests) (2.6)Requirement already satisfied: urllib3<1.24,>=1.21.1 ind:\programdata\lib\site-packages (from requests) (1.22)Requirement already satisfied: certifi>=2017.4.17 in d:\programdata\lib\sitepackages(from requests) (2018.1.18)Requirement already satisfied: chardet<3.1.0,>=3.0.2 ind:\programdata\lib\site-packages (from requests) (3.0.4)Installing collected packages: requestsSuccessfully installed requests-2.19.1
示例
在此示例中,我们正在为网页发出GET HTTP请求.为此,我们需要首先导入请求库,如下所示 :
In [1]: import requests
在以下代码行中,我们使用请求为url发出GET HTTP请求: https://authoraditiagarwal.com/.
In [2]: r = requests.get('https://authoraditiagarwal.com/')
现在我们可以使用 .text 检索内容属性如下 :
In [5]: r.text[:200]
观察在下面的输出中,我们得到前200个字符.
Out[5]: '\n\n\n\t\n\t
Urllib3
这是另一个可用于检索数据的Python库来自类似于请求库的网址.您可以在技术文档中阅读更多相关内容,价格为 https://urllib3.readthedocs.io/en/latest/.
安装Urllib3
使用 pip 命令,我们可以安装 urllib3 在我们的虚拟环境或全局安装中.
(base) D:\ProgramData>pip install urllib3Collecting urllib3Using cachedhttps://files.pythonhosted.org/packages/bd/c9/6fdd990019071a4a32a5e7cb78a1d92c53851ef4f56f62a3486e6a7d8ffb/urllib3-1.23-py2.py3-none-any.whlInstalling collected packages: urllib3Successfully installed urllib3-1.23
示例:使用Urllib3和BeautifulSoup进行刮擦
在以下示例中,我们使用 Urllib3 和 BeautifulSoup 来抓取网页.我们在请求库的位置使用 Urllib3 从网页获取原始数据(HTML).然后我们使用 BeautifulSoup 来解析HTML数据.
import urllib3from bs4 import BeautifulSouphttp = urllib3.PoolManager()r = http.request('GET', 'https://authoraditiagarwal.com')soup = BeautifulSoup(r.data, 'lxml')print (soup.title)print (soup.title.text)
这是你运行这个时会看到的输出代码 :
Learn and Grow with Aditi Agarwal Learn and Grow with Aditi Agarwal
Selenium
这是一个用于web的开源自动化测试套件不同浏览器和平台的应用程序.它不是一个单一的工具,而是一套软件.我们有Python,Java,C#,Ruby和JavaScript的selenium绑定.在这里,我们将使用selenium及其Python绑定来执行Web抓取.您可以在 Selenium 链接上了解有关Selenium with Java的更多信息.
Selenium Python绑定提供了一个方便的API来访问Selenium WebDrivers,如Firefox,IE,Chrome,Remote等.目前支持的Python版本是2.7,3.5及以上.
安装Selenium
使用 pip 命令,我们可以在虚拟环境或全局安装中安装 urllib3 .
pip install selenium
Chrome | https://sites.google.com/a/chromium.org/ |
边缘 | https://developer.microsoft.com/ |
Firefox | https://github.com/ |
Safari | https://webkit.org/ |
由于selenium需要驱动程序接口使用所选的浏览器,我们需要下载它.下表显示了不同的浏览器及其下载链接.
示例
此示例显示使用selenium进行网络抓取.它也可以用于测试硒测试.
下载指定版本浏览器的特定驱动程序后,我们需要用Python编程.
首先,需要从selenium导入 webdriver ,如下所示;
from selenium import webdriver
现在,提供我们根据我们的要求下载的网络驱动程序的路径 :
path = r'C:\\Users\\gaurav \\Desktop \\Chromedriver' browser = webdriver.Chrome(executable_path = path)
现在,提供我们想要在我们的Python脚本控制的Web浏览器中打开的URL.
browser.get(" https://authoraditiagarwal.com/leadershipmana gement ')
我们还可以通过提供lxml中提供的xpath来抓取特定元素.
browser.find_element_by_xpath('/html/body').click()
您可以查看浏览器,由Python脚本控制,用于输出.
Scrapy
Scrapy是一个用Python编写的快速,开源的Web爬行框架,用于提取在基于XPath的选择器的帮助下来自网页的数据. Scrapy于2008年6月26日首次发布,在BSD下获得许可,2015年6月发布里程碑1.0.它为我们提供了从网站中提取,处理和构建数据所需的所有工具.
安装Scrapy
使用 pip 命令,我们可以在虚拟环境或全局安装中安装 urllib3 .
pip install scrapy
有关Scrapy的更多细节研究,你可以去链接 Scrapy