웹 스크랩 핑을위한 Python 모듈

이 장에서는 웹 스크래핑에 사용할 수있는 다양한 Python 모듈에 대해 알아 보겠습니다.

virtualenv를 사용하는 Python 개발 환경

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 라이브러리에 대해 논의 할 것입니다.

요청

간단한 파이썬 웹 스크래핑 라이브러리입니다. 웹 페이지에 액세스하는 데 사용되는 효율적인 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

이 예에서는 웹 페이지에 대한 GET HTTP 요청을 작성합니다. 이를 위해 먼저 다음과 같이 요청 라이브러리를 가져와야합니다.

In [1]: import requests

다음 코드 줄에서는 요청을 사용하여 URL에 대한 GET HTTP 요청을 만듭니다. 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

다음과 유사한 URL에서 데이터를 검색하는 데 사용할 수있는 또 다른 Python 라이브러리입니다. 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을 사용한 스크래핑

다음 예에서는 다음을 사용하여 웹 페이지를 스크랩합니다. Urllib3BeautifulSoup. 우리는 사용하고 있습니다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 바인딩을 사용하여 웹 스크래핑을 수행 할 것입니다. 당신은 링크에서 Java와 셀레늄에 대해 자세히 알아볼 수 있습니다 셀레늄 .

Selenium Python 바인딩은 Firefox, IE, Chrome, Remote 등과 같은 Selenium WebDriver에 액세스 할 수있는 편리한 API를 제공합니다. 현재 지원되는 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)

이제 Python 스크립트로 제어되는 웹 브라우저에서 열고 자하는 URL을 제공합니다.

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

lxml에 제공된 xpath를 제공하여 특정 요소를 스크랩 할 수도 있습니다.

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

Python 스크립트로 제어되는 브라우저에서 출력을 확인할 수 있습니다.

스크래피

Scrapy는 Python으로 작성된 빠른 오픈 소스 웹 크롤링 프레임 워크로, XPath 기반 선택기의 도움으로 웹 페이지에서 데이터를 추출하는 데 사용됩니다. Scrapy는 2008 년 6 월 26 일에 BSD에 따라 라이선스를 받아 처음 출시되었으며 2015 년 6 월에 마일스톤 1.0이 출시되었습니다. 웹 사이트에서 데이터를 추출, 처리 및 구조화하는 데 필요한 모든 도구를 제공합니다.

Scrapy 설치

사용 pip 명령, 우리는 설치할 수 있습니다 urllib3 가상 환경 또는 글로벌 설치에서.

pip install scrapy

Scrapy 더 상세 연구를 위해 해당 링크에 갈 수 Scrapy