0%

windows10 anaconda에 scrapy 설치(와 실패기)

들어가기

토이프로젝트를 만드는 중, 웹 크롤링 기능이 필요했다.

자료를 찾아보니 python 기반의 beautifulsoup, selenium, scrapy 라는 것들이 주로 사용된 다는 것을 알게되었다.

beautifulsoup, selenium가 라이브러리 라면, scrapy 는 조금더 덩치가 큰 프레임워크라고 보면 될거 같다.

스크래피 (웹 프레임워크)

Scrapy(스크래피)(/ˈskreɪpi/ SKRAY-pee)[2] 는 Python으로 작성된 오픈소스 웹 크롤링 프레임워크이다. 웹 데이터를 수집하는 것을 목표로 설계되었다. 또한 API를 이용하여 데이터를 추출할 수 있고, 범용 웹 크롤러로 사용될 수 있다.[3] Scrapy는 웹 스크래핑 개발 및 서비스 회사 Scrapinghub Ltd. 에 의해 유지된다.
Scrapy 프로젝트는 “spiders” 를 중심으로 개발되었다. “spiders”는 여러 기능이 내장된 크롤러이다. 장고와 같은 철학인 중복배제를 따르고 있는 프레임워크이다.[4] Scrapy는 개발자들이 코드 재사용성을 높일 수 있도록 도와주어, 큰 규모의 크롤링 프로젝트 개발을 쉽게 할 수 있도록 해준다. 또한 Scrapy는 개발자들이 크롤링하려는 사이트의 동작을 테스트할 수 있도록 웹 크롤링 쉘을 제공한다.[5]
Scrapy는 Lyst,[6][7] Parse.ly,[8] Sayone Technologies[9], Sciences Po Medialab,[10]data.gov.uk’s World Government Data site.[11][1] 등등의 기업에서 사용되고 있다.

scrapy 단독으로 사용 시 일반적인 크롤링이 가능하지만, selenium의 기능이 필요하다면 연동이 가능한거 같다.

(selenium 경우 크롤링 대상결과를 브라우저로 가져와 상호작용을 통해 다이나믹하게 크롤링이 가능하다.

참고: https://stackoverflow.com/questions/6682503/click-a-button-in-scrapy

Python Scrapy 설치하기

일단 성공기와 실패기가 있는데 참고만 하길 바란다. 내가 한 작업의 시간순은 당연히 실패 → 성공이다.

요약하자면 pip로 설치를 실패했고, conda를 통해서 설치했다.

성공기

실습환경

  • windows10(64)
  • gitbash
  • anaconda 설치(32bit)
    • conda 4.8.2
    • python 3.8.0

현재 상태는 windows10 환경에서 anaconda를 설치한 상태이다.

windows10%20anaconda%20scrapy%20fdf71034c83b4250af25b84272075105/Untitled.png

conda 명령어는 일반적인 윈도우 cmd에서 동작하지 않으며, 아래 anaconda prompt에서 실행해야 한다.

windows10%20anaconda%20scrapy%20fdf71034c83b4250af25b84272075105/Untitled%201.png

콘다 명령어로 scrapy 설치하자.

1
conda install -c scrapinghub scrapy

설치가 끝난 뒤 아래 명령어로 설치된 패키지를 찾아보면 scrapy가 보인다.

1
conda list

windows10%20anaconda%20scrapy%20fdf71034c83b4250af25b84272075105/Untitled%202.png

실패기(참고만 하길)

실습환경

  • windows10(64)
  • gitbash
  • anaconda 설치(64bit)
    • conda 4.8.2
    • python 3.8.0

현재 상태는 windows10 환경에서 anaconada 를 설치한 상태이다.

windows10%20anaconda%20scrapy%20fdf71034c83b4250af25b84272075105/Untitled.png

아래 명령으로 Scrapy를 설치하자.

1
pip install scrapy

음 뭔가 안된다.

windows10%20anaconda%20scrapy%20fdf71034c83b4250af25b84272075105/Untitled%203.png

인터넷 강의에서 해보라는 대로 해보자.(windows에서 안되는 경우)

1
2
3
pip install --upgrade setuptools
pip install pypiwin32
pip install twisted[tls]

pip install –upgrade setuptools

windows10%20anaconda%20scrapy%20fdf71034c83b4250af25b84272075105/Untitled%204.png

pip install –upgrade setuptools 에러 발생

windows10%20anaconda%20scrapy%20fdf71034c83b4250af25b84272075105/Untitled%205.png

pip install twisted[tls] 역시 오류

windows10%20anaconda%20scrapy%20fdf71034c83b4250af25b84272075105/Untitled%206.png

음 이게 문제가 아닌가. 일단 pc 를 리부팅 해보자.

리부팅 후에도 여전히 문제가 있다. 오류나 경고 내용을 확인해보자.

1
2
3
4
5
6
7
8
9
10
WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/setuptools/
WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/setuptools/
WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/setuptools/
WARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/setuptools/
WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/setuptools/
Could not fetch URL https://pypi.org/simple/setuptools/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/setuptools/ (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available.")) - skipping
Requirement already up-to-date: setuptools in c:\users\amagr\anaconda3\lib\site-packages (45.2.0.post20200210)
WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
Could not fetch URL https://pypi.org/simple/pip/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/pip/ (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available.")) - skipping

문제해결 방법

https://funfunit.tistory.com/170

pip install 아래를 추가하라고 한다. 뭔가 ssl 인증서쪽 문제 같은데… 일단 해보자

1
--trusted-host pypi.python.org --trusted-host files.pythonhosted.org --trusted-host pypi.org

다시 scrapy 설치해보기

1
2
3
4
5
pip install scrapy --trusted-host pypi.python.org --trusted-host files.pythonhosted.org --trusted-host pypi.org

pip install --upgrade setuptools --trusted-host pypi.python.org --trusted-host files.pythonhosted.org --trusted-host pypi.org
pip install pypiwin32 --trusted-host pypi.python.org --trusted-host files.pythonhosted.org --trusted-host pypi.org
pip install twisted[tls] --trusted-host pypi.python.org --trusted-host files.pythonhosted.org --trusted-host pypi.org

음 여전히 안된다.

windows10%20anaconda%20scrapy%20fdf71034c83b4250af25b84272075105/Untitled%207.png

아래 방법을 한번 써보자.

1
conda config --set ssl_verify false

역시 안됨.

홀리 씻…

git bash에서 하니 설치가 된다. 아마도 뭔가 openssl 등을 사용하는 것 같은데, windows 터미널에서는 안되는 듯하다.

아래처럼 git bash에서 설치가 잘된다. 아 윈도우 터미널 개똥같다.

windows10%20anaconda%20scrapy%20fdf71034c83b4250af25b84272075105/Untitled%208.png

결론으로

windows10 git bash에서 아래 명령으로 scrapy가 설치 되었다.

1
pip install scrapy

2.1.0 버전이 설치 되었다.

windows10%20anaconda%20scrapy%20fdf71034c83b4250af25b84272075105/Untitled%209.png

이제 설치된 scrapy를 확인해보고, scrapy를 이용해서 프로젝트를 만들어보자.

1
scrapy startproject test

gitbash , cmd 모두 오류가 발생한다.

windows10%20anaconda%20scrapy%20fdf71034c83b4250af25b84272075105/Untitled%2010.png

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
C:\Users\amagr\examples\scrapy_test>scrapy startproject test1
Traceback (most recent call last):
File "c:\users\amagr\anaconda3\lib\runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "c:\users\amagr\anaconda3\lib\runpy.py", line 85, in _run_code
exec(code, run_globals)
File "C:\Users\amagr\anaconda3\Scripts\scrapy.exe\__main__.py", line 4, in <module>
File "c:\users\amagr\anaconda3\lib\site-packages\scrapy\__init__.py", line 34, in <module>
from scrapy.spiders import Spider
File "c:\users\amagr\anaconda3\lib\site-packages\scrapy\spiders\__init__.py", line 10, in <module>
from scrapy.http import Request
File "c:\users\amagr\anaconda3\lib\site-packages\scrapy\http\__init__.py", line 11, in <module>
from scrapy.http.request.form import FormRequest
File "c:\users\amagr\anaconda3\lib\site-packages\scrapy\http\request\form.py", line 10, in <module>
import lxml.html
File "c:\users\amagr\anaconda3\lib\site-packages\lxml\html\__init__.py", line 53, in <module>
from .. import etree
ImportError: DLL load failed: 지정된 모듈을 찾을 수 없습니다.

혹시나해서

scrapy가 안되면 설치하라는 패키지 3개를 설치 했다.

windows10%20anaconda%20scrapy%20fdf71034c83b4250af25b84272075105/Untitled%2011.png

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
amagr@DESKTOP-77BUVLD MINGW64 ~/examples/scrapy_test
$ pip install --upgrade setuptools
Collecting setuptools
Downloading setuptools-47.3.0-py3-none-any.whl (583 kB)
Installing collected packages: setuptools
Attempting uninstall: setuptools
Found existing installation: setuptools 45.2.0.post20200210
Uninstalling setuptools-45.2.0.post20200210:
Successfully uninstalled setuptools-45.2.0.post20200210
Successfully installed setuptools-47.3.0

amagr@DESKTOP-77BUVLD MINGW64 ~/examples/scrapy_test
$ pip install pypiwin32
Collecting pypiwin32
Downloading pypiwin32-223-py3-none-any.whl (1.7 kB)
Requirement already satisfied: pywin32>=223 in c:\users\amagr\anaconda3\lib\site-packages (from pypiwin32) (227)
Installing collected packages: pypiwin32
Successfully installed pypiwin32-223

amagr@DESKTOP-77BUVLD MINGW64 ~/examples/scrapy_test
$ pip install twisted[tls]
Requirement already satisfied: twisted[tls] in c:\users\amagr\anaconda3\lib\site-packages (20.3.0)
Requirement already satisfied: incremental>=16.10.1 in c:\users\amagr\anaconda3\lib\site-packages (from twisted[tls]) (17.5.0)
Requirement already satisfied: zope.interface>=4.4.2 in c:\users\amagr\anaconda3\lib\site-packages (from twisted[tls]) (5.1.0)
Requirement already satisfied: attrs>=19.2.0 in c:\users\amagr\anaconda3\lib\site-packages (from twisted[tls]) (19.3.0)
Requirement already satisfied: Automat>=0.3.0 in c:\users\amagr\anaconda3\lib\site-packages (from twisted[tls]) (20.2.0)
Requirement already satisfied: hyperlink>=17.1.1 in c:\users\amagr\anaconda3\lib\site-packages (from twisted[tls]) (19.0.0)
Requirement already satisfied: PyHamcrest!=1.10.0,>=1.9.0 in c:\users\amagr\anaconda3\lib\site-packages (from twisted[tls]) (2.0.2)
Requirement already satisfied: constantly>=15.1 in c:\users\amagr\anaconda3\lib\site-packages (from twisted[tls]) (15.1.0)
Requirement already satisfied: idna!=2.3,>=0.6; extra == "tls" in c:\users\amagr\anaconda3\lib\site-packages (from twisted[tls]) (2.8)
Requirement already satisfied: service-identity>=18.1.0; extra == "tls" in c:\users\amagr\anaconda3\lib\site-packages (from twisted[tls]) (18.1.0)
Requirement already satisfied: pyopenssl>=16.0.0; extra == "tls" in c:\users\amagr\anaconda3\lib\site-packages (from twisted[tls]) (19.1.0)
Requirement already satisfied: setuptools in c:\users\amagr\anaconda3\lib\site-packages (from zope.interface>=4.4.2->twisted[tls]) (47.3.0)
Requirement already satisfied: six in c:\users\amagr\anaconda3\lib\site-packages (from Automat>=0.3.0->twisted[tls]) (1.14.0)
Requirement already satisfied: pyasn1-modules in c:\users\amagr\anaconda3\lib\site-packages (from service-identity>=18.1.0; extra == "tls"->twisted[tls]) (0.2.8)
Requirement already satisfied: pyasn1 in c:\users\amagr\anaconda3\lib\site-packages (from service-identity>=18.1.0; extra == "tls"->twisted[tls]) (0.4.8)
Requirement already satisfied: cryptography in c:\users\amagr\anaconda3\lib\site-packages (from service-identity>=18.1.0; extra == "tls"->twisted[tls]) (2.8)
Requirement already satisfied: cffi!=1.11.3,>=1.8 in c:\users\amagr\anaconda3\lib\site-packages (from cryptography->service-identity>=18.1.0; extra == "tls"->twisted[tls]) (1.14.0)
Requirement already satisfied: pycparser in c:\users\amagr\anaconda3\lib\site-packages (from cffi!=1.11.3,>=1.8->cryptography->service-identity>=18.1.0; extra == "tls"->twisted[tls]) (2.19)

amagr@DESKTOP-77BUVLD MINGW64 ~/examples/scrapy_test

다시 스크래피로 프로젝트를 만들어보자.

음 역시 안된다.

windows10%20anaconda%20scrapy%20fdf71034c83b4250af25b84272075105/Untitled%2012.png

conda를 업데이트 해보라는데 역시 안됨.

1
conda update -n base conda

일단 scrapy를 다시 지웠다.

windows10%20anaconda%20scrapy%20fdf71034c83b4250af25b84272075105/Untitled%2013.png

https://wjdcjf0219.tistory.com/33

여길 보니 pip로 설치하지 말고 conda를 이용해서 설치하라고 한다.

1
conda install -c conda-forge scrapy

windows10%20anaconda%20scrapy%20fdf71034c83b4250af25b84272075105/Untitled%2014.png

windows10%20anaconda%20scrapy%20fdf71034c83b4250af25b84272075105/Untitled%2015.png

뭔가 한방에 많은 것들이 설치 되었다.

하지만 여전히 안된다?

windows10%20anaconda%20scrapy%20fdf71034c83b4250af25b84272075105/Untitled%2016.png

원인을 모르겠다.

혹시나 하고 인터넷 강의에서 알려준대로 비주얼스튜디오커뮤니티를 설치해보자.

windows10%20anaconda%20scrapy%20fdf71034c83b4250af25b84272075105/Untitled%2017.png

어제 설치 완료함. 용량도 크고 그만큼 시간도 오래 걸림

다시 해보자.

역시 안된다.

scrapy.cmdline 을 못가져오는듯…. 뭐지

windows10%20anaconda%20scrapy%20fdf71034c83b4250af25b84272075105/Untitled%2018.png

파이썬2 자료라 안될거 같긴한데, 한번 깔아보자.

https://www.python2.net/questions-80520.htm

1
pip install -I cryptography

역시 안깔린다.

windows10%20anaconda%20scrapy%20fdf71034c83b4250af25b84272075105/Untitled%2019.png

conda를 업그레이드 해도 안된다.

1
conda update -n base conda

https://www.thetopsites.net/article/51813527.shtml

뭘 해도 안된다. anacoda를 지우고 다시 깔아보자.


기존에 64 bit를 깔아썼다.

windows10%20anaconda%20scrapy%20fdf71034c83b4250af25b84272075105/Untitled%2020.png

다 지우고 리부트함….

혹시나 해서 이번에는 32 bit 아나콘다를 설치해보자.

windows10%20anaconda%20scrapy%20fdf71034c83b4250af25b84272075105/Untitled%2021.png

설치 완료후 다시 scrapy 설치해보자.

콘다 명령어로 설치하자. pip 는 뭔가 불안하다.

1
conda install -c scrapinghub scrapy

아나콘다 네비게이터를 키고 conda.exe 를 킨다.(이전에 conda 를 windows10 환경변수에 지정했는데, 뭔가 적절하지 못한 짓 같다. 이번에 anaconda 설치시 conda path 설정은 not recommended 였다.)

windows10%20anaconda%20scrapy%20fdf71034c83b4250af25b84272075105/Untitled%2022.png

아 드디어 동작한다. 인터넷 강의에서 pip 로 설치해서 그런지 그냥 windows cmd 에서 실행되지만,

conda 로 설치한 경우 conda 전용 프롬프트에서 scrapy 명령어가 먹힌다.

windows10%20anaconda%20scrapy%20fdf71034c83b4250af25b84272075105/Untitled%2023.png

끝!!!

파이썬을 잘 몰라서 뭔가 내가 잘못해서 삽질을 한 것 같다.