프로그래밍언어/Python

파이썬 웹 크롤링(Python web crawling) 만들기 가상환경 설치 conda 명령어 및 크롤링 필요한 라이브러리 설치하기 Step 2

by 앵과장 2022. 10. 10. 18:16
반응형

1부에서 웹크롤링이 왜필요한지 그리고 각언어에서 웹크롤링할때 필요한 라이브러리에 대해서 알아보았습니다.

오늘은 파이썬 언어 웹크롤링을 하기위한 아나콘다 가상환경 설정 및 beautifulsoup4, requests, selenium 설치 등에 대해서 진행해보겠습니다.

 

Python 웹크롤링 개발을 위한
아나콘다 가상환경 만들기

Local Python설치해도 되지만 

그렇게되면 내로컬도 지저분해지고 다양한 파이썬 버전이나 라이브러리 들에 환경구축에도 영향도가 있기때문에

가상환경을 구성해서 서비스에 필요한 라이브러리 버전만 설치 해보도록 하겠습니다.

 

1. Anaconda 콘다 Python 가상환경 생성 & 목록 확인 

아래 링크 참고하세요

 

python3 M1 맥 파이썬 아나콘다 가상 개발 환경 설정

안녕하세요 앵과장입니다. 파이썬 가상환경 설정을 진행해보도록 하겠습니다. 바로 앞에서 pyenv 가상환경을 설정해봤는데 M1에서 그렇게 나이스한 가상환경설정은 아닌것 같아서 아나콘다 로

angryfullstack.tistory.com

 

각 OS 에 맞는 아나콘다 설치하셨다면 잘설치되었는지 확인해보도록 하겠습니다.

저는 Mac User 이기때문에 Mac환경기반으로 설명하도록 하겠습니다.

다른 OS 사용자분들은 참고해서 각 명령어나 설정에 맞게 찾아서 적용하시면됩니다.

 

local에 설치된 python 버전확인

(base) lswteen@lswteenui-iMac anaconda3 % python --version
Python 3.9.7

Conda 기반 가상환경 생성

(base) lswteen@lswteenui-iMac anaconda3 % conda create -n web-env-001 python=3.9.7

아래처럼 설치되는것을 확인할수 있습니다.

Collecting package metadata (current_repodata.json): done
Solving environment: failed with repodata from current_repodata.json, will retry with next repodata source.
Collecting package metadata (repodata.json): done
Solving environment: done


==> WARNING: A newer version of conda exists. <==
  current version: 4.10.3
  latest version: 22.9.0

Please update conda by running

    $ conda update -n base -c defaults conda



## Package Plan ##

  environment location: /Users/lswteen/opt/anaconda3/envs/web-env-001

  added / updated specs:
    - python=3.9.7


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    ca-certificates-2022.07.19 |       hecd8cb5_0         124 KB
    certifi-2022.9.24          |   py39hecd8cb5_0         155 KB
    libcxx-14.0.6              |       h9765a3e_0         968 KB
    ncurses-6.3                |       hca72f7f_3         857 KB
    openssl-1.1.1q             |       hca72f7f_0         2.2 MB
    pip-22.2.2                 |   py39hecd8cb5_0         2.3 MB
    setuptools-63.4.1          |   py39hecd8cb5_0         1.1 MB
    sqlite-3.39.3              |       h707629a_0         1.2 MB
    tk-8.6.12                  |       h5d9f67b_0         3.1 MB
    tzdata-2022c               |       h04d1e81_0         107 KB
    xz-5.2.6                   |       hca72f7f_0         243 KB
    zlib-1.2.12                |       h4dc903c_3          95 KB
    ------------------------------------------------------------
                                           Total:        12.3 MB

The following NEW packages will be INSTALLED:

  ca-certificates    pkgs/main/osx-64::ca-certificates-2022.07.19-hecd8cb5_0
  certifi            pkgs/main/osx-64::certifi-2022.9.24-py39hecd8cb5_0
  libcxx             pkgs/main/osx-64::libcxx-14.0.6-h9765a3e_0
  libffi             pkgs/main/osx-64::libffi-3.3-hb1e8313_2
  ncurses            pkgs/main/osx-64::ncurses-6.3-hca72f7f_3
  openssl            pkgs/main/osx-64::openssl-1.1.1q-hca72f7f_0
  pip                pkgs/main/osx-64::pip-22.2.2-py39hecd8cb5_0
  python             pkgs/main/osx-64::python-3.9.7-h88f2d9e_1
  readline           pkgs/main/osx-64::readline-8.1.2-hca72f7f_1
  setuptools         pkgs/main/osx-64::setuptools-63.4.1-py39hecd8cb5_0
  sqlite             pkgs/main/osx-64::sqlite-3.39.3-h707629a_0
  tk                 pkgs/main/osx-64::tk-8.6.12-h5d9f67b_0
  tzdata             pkgs/main/noarch::tzdata-2022c-h04d1e81_0
  wheel              pkgs/main/noarch::wheel-0.37.1-pyhd3eb1b0_0
  xz                 pkgs/main/osx-64::xz-5.2.6-hca72f7f_0
  zlib               pkgs/main/osx-64::zlib-1.2.12-h4dc903c_3


Proceed ([y]/n)? y


Downloading and Extracting Packages
sqlite-3.39.3        | 1.2 MB    | ###################################################################################################################### | 100%
zlib-1.2.12          | 95 KB     | ###################################################################################################################### | 100%
tzdata-2022c         | 107 KB    | ###################################################################################################################### | 100%
xz-5.2.6             | 243 KB    | ###################################################################################################################### | 100%
openssl-1.1.1q       | 2.2 MB    | ###################################################################################################################### | 100%
tk-8.6.12            | 3.1 MB    | ###################################################################################################################### | 100%
setuptools-63.4.1    | 1.1 MB    | ###################################################################################################################### | 100%
pip-22.2.2           | 2.3 MB    | ###################################################################################################################### | 100%
libcxx-14.0.6        | 968 KB    | ###################################################################################################################### | 100%
certifi-2022.9.24    | 155 KB    | ###################################################################################################################### | 100%
ncurses-6.3          | 857 KB    | ###################################################################################################################### | 100%
ca-certificates-2022 | 124 KB    | ###################################################################################################################### | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate web-env-001
#
# To deactivate an active environment, use
#
#     $ conda deactivate

(base) lswteen@lswteenui-iMac anaconda3 % conda env list
# conda environments:
#
base                  *  /Users/lswteen/opt/anaconda3
jobkorea                 /Users/lswteen/opt/anaconda3/envs/jobkorea
seat                     /Users/lswteen/opt/anaconda3/envs/seat
web-env-001              /Users/lswteen/opt/anaconda3/envs/web-env-001

보통 conda 설치시 Yes 긍정적으로 하면 /Users/계정명/opt/anaconda3 에 설치됩니다.

 

conda 가상환경 목록 확인

(base) lswteen@lswteenui-iMac anaconda3 % conda env list
# conda environments:
#
base                  *  /Users/lswteen/opt/anaconda3
jobkorea                 /Users/lswteen/opt/anaconda3/envs/jobkorea
seat                     /Users/lswteen/opt/anaconda3/envs/seat
web-env-001              /Users/lswteen/opt/anaconda3/envs/web-env-001

Conda 가상환경 접속

(base) lswteen@lswteenui-iMac anaconda3 % source activate web-env-001
(web-env-001) lswteen@lswteenui-iMac anaconda3 %

가상환경 접속하기전 Local 사용 명령어

$ conda create -n {가상환경이름}  python={버전}

conda에 가상환경을 생성합니다. 

 

$ source activate {가상환경이름}

해당 명령어는 최초생성후  아나콘다 가상환경으로 접속하는 명령어입니다.

아래는 anaconda 가상환경에서 사용되는 conda 명령어 모음 입니다.

 

$ conda activate {가생환경이름}

가상환경 접속 이후 종료한뒤에 다시 재접속할때 해당명령어 사용

 

$ conda env list

생성된 conda 가상환경을 목록으로 보여줍니다.

 

$conda env remove -n {가상환경이름}

conda로 생성한 가상환경을 삭제합니다.

 

가상환경 접속후 사용 명령어

 

$ conda install {패키지 이름}

가상환경 접속후 install 은 필요한 패키지 설치가 가능하며 python 에서 pip, pip3 에 해당하는 동일한 기능입니다.

 

$ conda uninstall {패키지 이름}

가상환경에서 설치한 패키지를 삭제합니다.

 

$ conda deactivate

접속한 가상환경을 빠져나갈때는 해당명령어 사용하시면됩니다.

 

cd <디렉토리> : 디렉토리 이동

cls : 화면 클리어

dir : 현재 디렉토리의 폴더/파일 리스트

del <파일/폴더명> : 파일/폴더 삭제

mkdir <폴더명> : 폴더 생성

드라이브명: : 드라이브간 이동은 ex) c: , d: 처럼 드라이브명:으로 사용

ls : 현재 폴더의 파일/폴더 리스트

 

$ conda env create -f {yml파일}

ex) conda env export > environment.yaml 

yaml 파일 생성

(web-env-001) lswteen@lswteenui-iMac anaconda3 % conda env export > environment.yaml
(web-env-001) lswteen@lswteenui-iMac anaconda3 % ls -al
total 56
drwxr-xr-x    29 lswteen  staff    928 10 10 17:48 .
drwxr-xr-x     3 lswteen  staff     96  1 16  2022 ..
drwxr-xr-x     3 lswteen  staff     96  1 16  2022 Anaconda-Navigator.app
-rw-r--r--     1 lswteen  staff  11440 11 10  2021 LICENSE.txt
drwxr-xr-x   465 lswteen  staff  14880  1 16  2022 bin
drwxr-xr-x   374 lswteen  staff  11968  1 16  2022 conda-meta
drwxr-xr-x     3 lswteen  staff     96  1 16  2022 condabin
drwxr-xr-x     3 lswteen  staff     96  1 16  2022 doc
-rw-r--r--     1 lswteen  staff    968 10 10 17:48 environment.yaml
drwxrwsr-x     6 lswteen  staff    192 10 10 13:02 envs
drwxr-xr-x     5 lswteen  staff    160  1 16  2022 etc
drwxr-xr-x   365 lswteen  staff  11680  1 16  2022 include
drwxr-xr-x   774 lswteen  staff  24768  1 16  2022 lib
drwxr-xr-x     4 lswteen  staff    128  1 16  2022 libexec
drwxr-xr-x     3 lswteen  staff     96  1 16  2022 licensing
drwxr-xr-x     3 lswteen  staff     96  1 16  2022 man
drwxr-xr-x    68 lswteen  staff   2176  1 16  2022 mkspecs
drwxr-xr-x    15 lswteen  staff    480  1 16  2022 phrasebooks
drwxr-xr-x  1299 lswteen  staff  41568 10 10 17:28 pkgs
drwxr-xr-x    26 lswteen  staff    832  1 16  2022 plugins
-rw-rw-r--     2 lswteen  staff  11518  7  4  2021 pyodbc.pyi
drwxr-xr-x     3 lswteen  staff     96  1 16  2022 python.app
drwxr-xr-x    27 lswteen  staff    864  1 16  2022 qml
drwxr-xr-x     7 lswteen  staff    224  1 16  2022 resources
drwxr-xr-x    14 lswteen  staff    448  1 16  2022 sbin
drwxr-xr-x    20 lswteen  staff    640  1 16  2022 share
drwxr-xr-x     3 lswteen  staff     96  1 16  2022 shell
drwxr-xr-x     9 lswteen  staff    288  1 16  2022 ssl
drwxr-xr-x   290 lswteen  staff   9280  1 16  2022 translations

 

참고링크 : 

https://docs.conda.io/projects/conda/en/4.6.0/_downloads/52a95608c49671267e40c689e0bc00ca/conda-cheatsheet.pdf

 

 


 

 

웹 크롤링 필요한 패키지 설치

 

BeautifulSoup4 설치

conda install beautifulsoup4 설치

웹 페이지의 정보를 쉽게 스크랩할 수 있도록 기능을 제공하는 라이브러리입니다.

(web-env-001) lswteen@lswteenui-iMac anaconda3 % conda install beautifulsoup4
Collecting package metadata (current_repodata.json): done
Solving environment: done


==> WARNING: A newer version of conda exists. <==
  current version: 4.10.3
  latest version: 22.9.0

Please update conda by running

    $ conda update -n base -c defaults conda



## Package Plan ##

  environment location: /Users/lswteen/opt/anaconda3/envs/web-env-001

  added / updated specs:
    - beautifulsoup4


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    beautifulsoup4-4.11.1      |   py39hecd8cb5_0         189 KB
    ------------------------------------------------------------
                                           Total:         189 KB

The following NEW packages will be INSTALLED:

  beautifulsoup4     pkgs/main/osx-64::beautifulsoup4-4.11.1-py39hecd8cb5_0
  soupsieve          pkgs/main/noarch::soupsieve-2.3.1-pyhd3eb1b0_0


Proceed ([y]/n)? y


Downloading and Extracting Packages
beautifulsoup4-4.11. | 189 KB    | ###################################################################################################################### | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
(web-env-001) lswteen@lswteenui-iMac anaconda3 %

 

selenium 설치

동적 처리를위한 사용용도 입니다. chrome 드라이브가 필요하며 관련 라이브러리는 정적페이지 크롤링에서는 필요하지 않지만

특정 동작 이후 생성되는 파싱이 필요하다면 사용해야합니다.

(web-env-001) lswteen@lswteenui-iMac anaconda3 % conda install selenium
Collecting package metadata (current_repodata.json): done
Solving environment: done


==> WARNING: A newer version of conda exists. <==
  current version: 4.10.3
  latest version: 22.9.0

Please update conda by running

    $ conda update -n base -c defaults conda



## Package Plan ##

  environment location: /Users/lswteen/opt/anaconda3/envs/web-env-001

  added / updated specs:
    - selenium


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    cffi-1.15.1                |   py39hc55c11b_0         219 KB
    cryptography-37.0.1        |   py39hf6deb26_0         1.1 MB
    pyopenssl-22.0.0           |     pyhd3eb1b0_0          50 KB
    urllib3-1.26.11            |   py39hecd8cb5_0         185 KB
    ------------------------------------------------------------
                                           Total:         1.5 MB

The following NEW packages will be INSTALLED:

  brotlipy           pkgs/main/osx-64::brotlipy-0.7.0-py39h9ed2024_1003
  cffi               pkgs/main/osx-64::cffi-1.15.1-py39hc55c11b_0
  cryptography       pkgs/main/osx-64::cryptography-37.0.1-py39hf6deb26_0
  idna               pkgs/main/noarch::idna-3.3-pyhd3eb1b0_0
  pycparser          pkgs/main/noarch::pycparser-2.21-pyhd3eb1b0_0
  pyopenssl          pkgs/main/noarch::pyopenssl-22.0.0-pyhd3eb1b0_0
  pysocks            pkgs/main/osx-64::pysocks-1.7.1-py39hecd8cb5_0
  selenium           pkgs/main/osx-64::selenium-3.141.0-py39h9ed2024_1000
  urllib3            pkgs/main/osx-64::urllib3-1.26.11-py39hecd8cb5_0


Proceed ([y]/n)? y


Downloading and Extracting Packages
cffi-1.15.1          | 219 KB    | ######################################################################################## | 100%
pyopenssl-22.0.0     | 50 KB     | ######################################################################################## | 100%
urllib3-1.26.11      | 185 KB    | ######################################################################################## | 100%
cryptography-37.0.1  | 1.1 MB    | ######################################################################################## | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: done

requests 설치

Requests: HTTP 요청을 보낼 수 있도록 기능을 제공하는 라이브러리 입니다.

(web-env-001) lswteen@lswteenui-iMac anaconda3 % conda install requests
Collecting package metadata (current_repodata.json): done
Solving environment: done


==> WARNING: A newer version of conda exists. <==
  current version: 4.10.3
  latest version: 22.9.0

Please update conda by running

    $ conda update -n base -c defaults conda



## Package Plan ##

  environment location: /Users/lswteen/opt/anaconda3/envs/web-env-001

  added / updated specs:
    - requests


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    requests-2.28.1            |   py39hecd8cb5_0          93 KB
    ------------------------------------------------------------
                                           Total:          93 KB

The following NEW packages will be INSTALLED:

  charset-normalizer pkgs/main/noarch::charset-normalizer-2.0.4-pyhd3eb1b0_0
  requests           pkgs/main/osx-64::requests-2.28.1-py39hecd8cb5_0


Proceed ([y]/n)? y


Downloading and Extracting Packages
requests-2.28.1      | 93 KB     | ######################################################################################## | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: done

 

웹 페이지 크롤링

1. 가상환경에 workspace  폴더 생성

$mkdir workspace

 

2.workspace 에 프로젝트 폴더생성

$mkdir parse-001

 

3.vim parser.py 파일 생성

가비아 라이브러리 홈페이지 포스트 제목 추출

import requests
from bs4 import BeautifulSoup as bs

page = requests.get("https://library.gabia.com/")
soup = bs(page.text, "html.parser")

elements = soup.select('div.esg-entry-content a > span')

for index, element in enumerate(elements, 1):
	print("{} 번째 게시글의 제목: {}".format(index, element.text))

python parser.py 실행시

아래처럼 가비아에 제목 크롤링 진행됨 .

(web-env-001) lswteen@lswteenui-iMac parse-001 % python parser.py
1 번째 게시글의 제목: 전자결재, 문서철 작업에서 벗어나는 방법
2 번째 게시글의 제목: 핵심산업 클라우드 플래그십 프로젝트 핵심정리
3 번째 게시글의 제목: 전자결재, 페이퍼리스 2.0 시대로 향하는 방법
4 번째 게시글의 제목: 기업메신저, 채팅과 쪽지도 기업의 자산?!
5 번째 게시글의 제목: 기업메신저, 업무 스타일에 딱 맞게 설정
6 번째 게시글의 제목: 기업메신저로 조직의 업무 스트레스 줄이는 방법
7 번째 게시글의 제목: 클라우드 도입 시 MSP 선정 기준 3가지
8 번째 게시글의 제목: 클라우드, 손해 안 보고 제대로 쓰려면? ③ - 클라우드 구성 방식
9 번째 게시글의 제목: 전문 비즈니스 컨설팅이 0원? - 클라우드 컨설팅 지원 사업
10 번째 게시글의 제목: 그룹웨어 전자결재로 ESG 경영이 가능하다?!
11 번째 게시글의 제목: 공공 클라우드 필수 관문, CSAP SaaS 보안 인증
12 번째 게시글의 제목: 클라우드, 손해 안 보고 제대로 쓰려면? ② - 고가용성 기능들
13 번째 게시글의 제목: 기업메일 관리로 효율성과 보안성 둘 다 잡기
14 번째 게시글의 제목: MSP란? 클라우드 도입 전 반드시 알아야 할 사실
15 번째 게시글의 제목: 클라우드, 손해 안 보고 제대로 쓰려면? - 고가용성 개념과 중요성
16 번째 게시글의 제목: 기업 메신저가 주는 재택근무 꿀맛, 보안에선 쓴맛?!
17 번째 게시글의 제목: 1억 원의 주인공을 찾는다고? - KDB 스타트업 프로그램

여기까지 가볍게 아나콘다 가상환경 설정 및 명렁어 

웹크롤링에 필요한 패키지 설치 후 가비아 크롤링까지 진행하였습니다.

 

참고링크 : https://library.gabia.com/contents/9239/

 

가비아 라이브러리

IT 콘텐츠 허브

library.gabia.com

 

다음 진행은 좀더 심화 과정으로 이미지, 타이틀 가져오면서 라인별로 어떻게 접근하는건지 

기능단위로 정리해보도록 하겠습니다.

긴글 읽어 주셔서 감사합니다. :)