Moduły Pythona do przeglądania sieci

W tym rozdziale poznajmy różne moduły Pythona, których możemy użyć do skrobania stron internetowych.

Środowiska programistyczne Python korzystające z virtualenv

Virtualenv to narzędzie do tworzenia izolowanych środowisk Python. Z pomocą virtualenv możemy stworzyć folder zawierający wszystkie niezbędne pliki wykonywalne do korzystania z pakietów, których wymaga nasz projekt w Pythonie. Pozwala nam również dodawać i modyfikować moduły Pythona bez dostępu do instalacji globalnej.

Możesz użyć następującego polecenia, aby zainstalować 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

Teraz musimy stworzyć katalog, który będzie reprezentował projekt za pomocą następującego polecenia -

(base) D:\ProgramData>mkdir webscrap

Teraz wejdź do tego katalogu za pomocą następującego polecenia -

(base) D:\ProgramData>cd webscrap

Teraz musimy zainicjować wybrany przez nas folder środowiska wirtualnego w następujący sposób -

(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.

Teraz aktywuj środowisko wirtualne poleceniem podanym poniżej. Po pomyślnej aktywacji zobaczysz jego nazwę po lewej stronie w nawiasach.

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

Możemy zainstalować dowolny moduł w tym środowisku w następujący sposób -

(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

Do dezaktywacji środowiska wirtualnego możemy użyć następującego polecenia -

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

Jak widać, usługa (websc) została dezaktywowana.

Moduły Pythona do przeglądania sieci

Web scraping to proces konstruowania agenta, który może automatycznie wyodrębniać, analizować, pobierać i porządkować użyteczne informacje z sieci. Innymi słowy, zamiast ręcznie zapisywać dane ze stron internetowych, oprogramowanie do skrobania stron internetowych automatycznie ładuje i wyodrębnia dane z wielu witryn internetowych zgodnie z naszymi wymaganiami.

W tej sekcji omówimy przydatne biblioteki Pythona do skrobania stron internetowych.

Upraszanie

Jest to prosta biblioteka do skrobania sieci w języku Python. Jest to wydajna biblioteka HTTP używana do uzyskiwania dostępu do stron internetowych. Z pomocąRequests, możemy uzyskać nieprzetworzony kod HTML stron internetowych, który można następnie przeanalizować w celu pobrania danych. Przed użyciemrequests, zrozummy jego instalację.

Instalowanie żądań

Możemy go zainstalować w naszym środowisku wirtualnym lub w instalacji globalnej. Z pomocąpip polecenie, możemy go łatwo zainstalować w następujący sposób -

(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

Przykład

W tym przykładzie wykonujemy żądanie GET HTTP dla strony internetowej. W tym celu musimy najpierw zaimportować bibliotekę żądań w następujący sposób -

In [1]: import requests

W poniższym wierszu kodu używamy żądań do wykonania żądań HTTP GET dla adresu URL: https://authoraditiagarwal.com/ wykonując żądanie GET.

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

Teraz możemy pobrać zawartość za pomocą .text właściwość w następujący sposób -

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

Zauważ, że w poniższym wyniku otrzymaliśmy pierwsze 200 znaków.

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

Jest to kolejna biblioteka Pythona, której można użyć do pobierania danych z adresów URL podobnych do requestsbiblioteka. Możesz przeczytać więcej na ten temat w dokumentacji technicznej pod adresemhttps://urllib3.readthedocs.io/en/latest/.

Instalowanie Urllib3

Używając pip polecenie, możemy zainstalować urllib3 w naszym wirtualnym środowisku lub w globalnej instalacji.

(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

Przykład: skrobanie przy użyciu Urllib3 i BeautifulSoup

W poniższym przykładzie zdrapujemy stronę internetową przy użyciu Urllib3 i BeautifulSoup. UżywamyUrllib3w miejscu żądań biblioteka do pobrania surowych danych (HTML) ze strony WWW. Następnie używamyBeautifulSoup do analizowania tych danych 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)

Oto dane wyjściowe, które zobaczysz po uruchomieniu tego kodu -

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

Selen

Jest to zautomatyzowany pakiet testowy typu open source dla aplikacji internetowych w różnych przeglądarkach i platformach. To nie jest pojedyncze narzędzie, ale pakiet oprogramowania. Mamy wiązania selenu dla języków Python, Java, C #, Ruby i JavaScript. Tutaj mamy zamiar wykonać skrobanie sieci przy użyciu selenu i jego powiązań Pythona. Możesz dowiedzieć się więcej o Selenium z Javą pod linkiem Selenium .

Powiązania Selenium Python zapewniają wygodny interfejs API do dostępu do Selenium WebDrivers, takich jak Firefox, IE, Chrome, Remote itp. Aktualnie obsługiwane wersje Pythona to 2.7, 3.5 i nowsze.

Instalowanie Selenium

Używając pip polecenie, możemy zainstalować urllib3 w naszym wirtualnym środowisku lub w globalnej instalacji.

pip install selenium

Ponieważ selen wymaga sterownika do współpracy z wybraną przeglądarką, musimy go pobrać. W poniższej tabeli przedstawiono różne przeglądarki i ich łącza do pobierania tego samego.

Chrome

https://sites.google.com/a/chromium.org/

Edge

https://developer.microsoft.com/

Firefox

https://github.com/

Safari

https://webkit.org/

Przykład

Ten przykład pokazuje skrobanie sieci przy użyciu selenu. Może być również używany do testowania, które nazywa się testowaniem selenu.

Po pobraniu konkretnego sterownika dla określonej wersji przeglądarki, musimy programować w języku Python.

Najpierw musisz zaimportować webdriver z selenu w następujący sposób -

from selenium import webdriver

Teraz podaj ścieżkę sterownika sieciowego, który pobraliśmy zgodnie z naszymi wymaganiami -

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

Teraz podaj adres URL, który chcemy otworzyć w tej przeglądarce internetowej, teraz kontrolowanej przez nasz skrypt Pythona.

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

Możemy również zeskrobać określony element, podając xpath, jak podano w lxml.

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

Możesz sprawdzić przeglądarkę, kontrolowaną przez skrypt Pythona, pod kątem danych wyjściowych.

Scrapy

Scrapy to szybka platforma do indeksowania stron internetowych typu open source napisana w języku Python, używana do wyodrębniania danych ze strony internetowej za pomocą selektorów opartych na XPath. Scrapy został wydany po raz pierwszy 26 czerwca 2008 roku na licencji BSD, a kamień milowy 1.0 został wydany w czerwcu 2015 roku. Dostarcza nam wszystkich narzędzi potrzebnych do wyodrębniania, przetwarzania i strukturyzowania danych ze stron internetowych.

Instalowanie Scrapy

Używając pip polecenie, możemy zainstalować urllib3 w naszym wirtualnym środowisku lub w globalnej instalacji.

pip install scrapy

Bardziej szczegółowe badanie Scrapy można znaleźć pod linkiem Scrapy