Модули Python для парсинга веб-страниц

В этой главе давайте изучим различные модули Python, которые мы можем использовать для парсинга веб-страниц.

Среды разработки Python с использованием virtualenv

Virtualenv - это инструмент для создания изолированных сред Python. С помощью virtualenv мы можем создать папку, содержащую все необходимые исполняемые файлы для использования пакетов, которые требуются нашему проекту Python. Это также позволяет нам добавлять и изменять модули Python без доступа к глобальной установке.

Вы можете использовать следующую команду для установки virtualenv -

(base) D:\ProgramData>pip install virtualenv
Collecting virtualenv
   Downloading
https://files.pythonhosted.org/packages/b6/30/96a02b2287098b23b875bc8c2f58071c3
5d2efe84f747b64d523721dc2b5/virtualenv-16.0.0-py2.py3-none-any.whl
(1.9MB)
   100% |¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 1.9MB 86kB/s
Installing collected packages: virtualenv
Successfully installed virtualenv-16.0.0

Теперь нам нужно создать каталог, который будет представлять проект с помощью следующей команды -

(base) D:\ProgramData>mkdir webscrap

Теперь войдите в этот каталог с помощью следующей команды -

(base) D:\ProgramData>cd webscrap

Теперь нам нужно инициализировать папку виртуальной среды по нашему выбору следующим образом:

(base) D:\ProgramData\webscrap>virtualenv websc
Using base prefix 'd:\\programdata'
New python executable in D:\ProgramData\webscrap\websc\Scripts\python.exe
Installing setuptools, pip, wheel...done.

Теперь активируйте виртуальную среду с помощью приведенной ниже команды. После успешной активации вы увидите его название в скобках слева.

(base) D:\ProgramData\webscrap>websc\scripts\activate

Мы можем установить любой модуль в этой среде следующим образом:

(websc) (base) D:\ProgramData\webscrap>pip install requests
Collecting requests
   Downloading
https://files.pythonhosted.org/packages/65/47/7e02164a2a3db50ed6d8a6ab1d6d60b69
c4c3fdf57a284257925dfc12bda/requests-2.19.1-py2.py3-none-any.whl (9
1kB)
   100% |¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 92kB 148kB/s
Collecting chardet<3.1.0,>=3.0.2 (from requests)
   Downloading
https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca
55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl (133
kB)
   100% |¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 143kB 369kB/s
Collecting certifi>=2017.4.17 (from requests)
   Downloading
https://files.pythonhosted.org/packages/df/f7/04fee6ac349e915b82171f8e23cee6364
4d83663b34c539f7a09aed18f9e/certifi-2018.8.24-py2.py3-none-any.whl
(147kB)
   100% |¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 153kB 527kB/s
Collecting urllib3<1.24,>=1.21.1 (from requests)
   Downloading
https://files.pythonhosted.org/packages/bd/c9/6fdd990019071a4a32a5e7cb78a1d92c5
3851ef4f56f62a3486e6a7d8ffb/urllib3-1.23-py2.py3-none-any.whl (133k
B)
   100% |¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 143kB 517kB/s
Collecting idna<2.8,>=2.5 (from requests)
   Downloading
https://files.pythonhosted.org/packages/4b/2a/0276479a4b3caeb8a8c1af2f8e4355746
a97fab05a372e4a2c6a6b876165/idna-2.7-py2.py3-none-any.whl (58kB)
   100% |¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 61kB 339kB/s
Installing collected packages: chardet, certifi, urllib3, idna, requests
Successfully installed certifi-2018.8.24 chardet-3.0.4 idna-2.7 requests-2.19.1
urllib3-1.23

Для деактивации виртуальной среды мы можем использовать следующую команду -

(websc) (base) D:\ProgramData\webscrap>deactivate
(base) D:\ProgramData\webscrap>

Вы можете видеть, что (websc) деактивирован.

Модули Python для парсинга веб-страниц

Веб-скрапинг - это процесс создания агента, который может автоматически извлекать, анализировать, загружать и систематизировать полезную информацию из Интернета. Другими словами, вместо того, чтобы вручную сохранять данные с веб-сайтов, программное обеспечение для парсинга автоматически загружает и извлекает данные с нескольких веб-сайтов в соответствии с нашими требованиями.

В этом разделе мы собираемся обсудить полезные библиотеки Python для парсинга веб-страниц.

Запросы

Это простая библиотека для очистки веб-страниц на Python. Это эффективная HTTP-библиотека, используемая для доступа к веб-страницам. С помощьюRequests, мы можем получить необработанный HTML-код веб-страниц, который затем может быть проанализирован для получения данных. Перед использованиемrequests, давайте разберемся с его установкой.

Установка запросов

Мы можем установить его либо в нашей виртуальной среде, либо в глобальной установке. С помощьюpip команду, мы можем легко установить ее следующим образом -

(base) D:\ProgramData> pip install requests
Collecting requests
Using cached
https://files.pythonhosted.org/packages/65/47/7e02164a2a3db50ed6d8a6ab1d6d60b69
c4c3fdf57a284257925dfc12bda/requests-2.19.1-py2.py3-none-any.whl
Requirement 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 in
d:\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 in
d:\programdata\lib\site-packages (from requests) (3.0.4)
Installing collected packages: requests
Successfully installed requests-2.19.1

пример

В этом примере мы выполняем HTTP-запрос GET для веб-страницы. Для этого нам нужно сначала импортировать библиотеку запросов следующим образом:

In [1]: import requests

В этой следующей строке кода мы используем запросы для создания HTTP-запросов GET для URL-адреса: https://authoraditiagarwal.com/ сделав запрос GET.

In [2]: r = requests.get('https://authoraditiagarwal.com/')

Теперь мы можем получить контент, используя .text имущество следующим образом -

In [5]: r.text[:200]

Обратите внимание, что в следующем выводе мы получили первые 200 символов.

Out[5]: '<!DOCTYPE html>\n<html lang="en-US"\n\titemscope
\n\titemtype="http://schema.org/WebSite" \n\tprefix="og: http://ogp.me/ns#"
>\n<head>\n\t<meta charset
="UTF-8" />\n\t<meta http-equiv="X-UA-Compatible" content="IE'

Urllib3

Это еще одна библиотека Python, которую можно использовать для извлечения данных из URL-адресов, похожих на requestsбиблиотека. Вы можете узнать больше об этом в технической документации на сайтеhttps://urllib3.readthedocs.io/en/latest/.

Установка Urllib3

Используя pip команда, мы можем установить urllib3 либо в нашей виртуальной среде, либо в глобальной установке.

(base) D:\ProgramData>pip install urllib3
Collecting urllib3
Using cached
https://files.pythonhosted.org/packages/bd/c9/6fdd990019071a4a32a5e7cb78a1d92c5
3851ef4f56f62a3486e6a7d8ffb/urllib3-1.23-py2.py3-none-any.whl
Installing collected packages: urllib3
Successfully installed urllib3-1.23

Пример: парсинг с использованием Urllib3 и BeautifulSoup

В следующем примере мы очищаем веб-страницу с помощью Urllib3 и BeautifulSoup. Мы используемUrllib3на месте библиотеки запросов на получение необработанных данных (HTML) с веб-страницы. Затем мы используемBeautifulSoup для анализа этих HTML-данных.

import urllib3
from bs4 import BeautifulSoup
http = urllib3.PoolManager()
r = http.request('GET', 'https://authoraditiagarwal.com')
soup = BeautifulSoup(r.data, 'lxml')
print (soup.title)
print (soup.title.text)

Это результат, который вы увидите, когда запустите этот код -

<title>Learn and Grow with Aditi Agarwal</title>
Learn and Grow with Aditi Agarwal

Селен

Это пакет автоматического тестирования с открытым исходным кодом для веб-приложений в различных браузерах и платформах. Это не отдельный инструмент, а набор программ. У нас есть привязки селена для Python, Java, C #, Ruby и JavaScript. Здесь мы собираемся выполнить парсинг веб-страниц с использованием селена и его привязок к Python. Вы можете узнать больше о Selenium с Java по ссылке Selenium .

Привязки 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/

Edge

https://developer.microsoft.com/

Firefox

https://github.com/

Safari

https://webkit.org/

пример

В этом примере показано парсинг веб-страниц с использованием селена. Его также можно использовать для тестирования, которое называется тестированием на селен.

После загрузки конкретного драйвера для указанной версии браузера нам нужно заняться программированием на Python.

Во-первых, нужно импортировать webdriver из селена следующим образом -

from selenium import webdriver

Теперь укажите путь к веб-драйверу, который мы загрузили в соответствии с нашим требованием -

path = r'C:\\Users\\gaurav\\Desktop\\Chromedriver'
browser = webdriver.Chrome(executable_path = path)

Теперь укажите URL-адрес, который мы хотим открыть в этом веб-браузере, который теперь контролируется нашим скриптом Python.

browser.get('https://authoraditiagarwal.com/leadershipmanagement')

Мы также можем очистить определенный элемент, указав xpath, как указано в lxml.

browser.find_element_by_xpath('/html/body').click()

Вы можете проверить браузер, управляемый скриптом Python, на предмет вывода.

Scrapy

Scrapy - это быстрая структура веб-сканирования с открытым исходным кодом, написанная на Python, используемая для извлечения данных с веб-страницы с помощью селекторов на основе XPath. Scrapy был впервые выпущен 26 июня 2008 года по лицензии BSD, а в июне 2015 года была выпущена веха 1.0. Он предоставляет нам все инструменты, необходимые для извлечения, обработки и структурирования данных с веб-сайтов.

Установка Scrapy

Используя pip команда, мы можем установить urllib3 либо в нашей виртуальной среде, либо в глобальной установке.

pip install scrapy

Для более детального изучения Scrapy вы можете перейти по ссылке Scrapy