Anaconda 설치후 가상환경설정 + Selenium실행
11 Sep 2018 | python아나콘다에서 셀레니움 사용하기
1. 아나콘다 가상환경에서 쥬피터 노트북 사용하기 설정
아나콘다(Anaconda) 가상 환경에서 쥬피터 노트북(Jupyter Notebook)
을 띄운 후 셀레니움(selenium)을 실행해 볼 수 있다!
그런데 현재 내 가상 환경의 파이썬 버전이 2.7인데, 쥬피터 노트북
에 파이썬 3버전만 표시되는 문제점이 있길래 이 문제점을 미리 해결하는 과정을 기술해보았다. 개인 취향이지만 쥬피터 노트북
사용을 원치 않는 다면 아래 과정은 불 필요하다.
가상환경 설정
가상환경을 만든 후 이를 활성화 한 뒤, 쥬피터 노트북
를 실행하는 명령어는 다음과 같다.
/Users/eddiek $ conda create --name py27 python=2.7
/Users/eddiek $ source activate py27
/Users/eddiek $ jupyter notebook
위 처럼 하면 모든 것이 잘 되지만 쥬피터 노트북 실행후 파이썬 3
는 보이는데, 정작 지금 사용하고 싶은 2.7버전이 안 보이는 문제가 있다.
해결법
ipykernel
를 설치후에 아래와 같이 세팅후 jupyter notebook
를 해 준다.
(py27) /Users/eddiek/selenium101 $ conda install ipykernel
(py27) /Users/eddiek/selenium101 $ python -m ipykernel install --user --name py27 --display-name "Python (py27)"
Installed kernelspec py27 in /Users/eddiek/Library/Jupyter/kernels/py27
(py27) /Users/eddiek/selenium101 $ jupyter notebook
이제 다시 쥬피터 노트북을 실행하면 두 개의 버전이 보일 것이다.
모든 것이 정상인지는 다음처럼 파이썬 2에서만 작동하는 print를 코딩해 확인할 수 있다.
2. selenium 사용하기
설치
간단히 아래와 같은 순서로 설치한다.
- chromeDriver 설치하기( 구글링해서 간단히 설치하면 됨)
- chromeDriver를 다운로드 후에
selenium101
폴더에 복사한다. - 셀레니움 설치하기
콘다환경에서 셀레니움 설치하는 법은 다음과 같다.
$ conda install selenium
실행
이제 $ ipython
명령어ipython
을 실행하거나 또는 $ juyiter notebook
을 타이핑해 쥬피터노트북
을 실행한다.
In [1]: from selenium import webdriver
그 다음 아래처럼 하면 크롬 창이 뜰 것이다.
In [3]: driver = webdriver.Chrome('/Users/eddiek/selenium101/chromedriver')
창을 닫지 말고 이어서 아래 명령어를 타이핑한다
In [6]: driver = webdriver.Chrome('/Users/eddiek/selenium101/chromedriver')
In [7]: driver.get('http://www.google.com')
크롬에서 원하는 페이지로 이동할 것이다
이것 저것 만져보자
In [10]: driver.title
Out[10]: u'Google'
In [11]: driver.page_source
toscrape 페이지에서 작업을 해보자.
In [13]: driver.get('http://books.toscrape.com')
In [14]: from scrapy.selector import Selector
In [15]: sel = Selector(text=driver.page_source)
In [16]: sel
Out[16]: <Selector xpath=None data=u'<html xmlns="http://www.w3.org/1999/xhtm'>
In [17]: sel.xpath('//h1')
Out[17]: [<Selector xpath='//h1' data=u'<h1>All products</h1>'>]
In [18]: sel.xpath('//h3/a')
Out[18]:
[<Selector xpath='//h3/a' data=u'<a href="catalogue/a-light-in-the-attic_'>,
<Selector xpath='//h3/a' data=u'<a href="catalogue/tipping-the-velvet_99'>,
<Selector xpath='//h3/a' data=u'<a href="catalogue/soumission_998/index.'>,
<Selector xpath='//h3/a' data=u'<a href="catalogue/sharp-objects_997/ind'>,
<Selector xpath='//h3/a' data=u'<a href="catalogue/sapiens-a-brief-histo'>,
<Selector xpath='//h3/a' data=u'<a href="catalogue/the-requiem-red_995/i'>,
<Selector xpath='//h3/a' data=u'<a href="catalogue/the-dirty-little-secr'>,
<Selector xpath='//h3/a' data=u'<a href="catalogue/the-coming-woman-a-no'>,
<Selector xpath='//h3/a' data=u'<a href="catalogue/the-boys-in-the-boat-'>,
<Selector xpath='//h3/a' data=u'<a href="catalogue/the-black-maria_991/i'>,
<Selector xpath='//h3/a' data=u'<a href="catalogue/starving-hearts-trian'>,
<Selector xpath='//h3/a' data=u'<a href="catalogue/shakespeares-sonnets_'>,
<Selector xpath='//h3/a' data=u'<a href="catalogue/set-me-free_988/index'>,
<Selector xpath='//h3/a' data=u'<a href="catalogue/scott-pilgrims-precio'>,
<Selector xpath='//h3/a' data=u'<a href="catalogue/rip-it-up-and-start-a'>,
<Selector xpath='//h3/a' data=u'<a href="catalogue/our-band-could-be-you'>,
<Selector xpath='//h3/a' data=u'<a href="catalogue/olio_984/index.html" '>,
<Selector xpath='//h3/a' data=u'<a href="catalogue/mesaerion-the-best-sc'>,
<Selector xpath='//h3/a' data=u'<a href="catalogue/libertarianism-for-be'>,
<Selector xpath='//h3/a' data=u'<a href="catalogue/its-only-the-himalaya'>]
In [19]: sel.xpath('//h3/a/@href').extract()
Out[19]:
[u'catalogue/a-light-in-the-attic_1000/index.html',
u'catalogue/tipping-the-velvet_999/index.html',
u'catalogue/soumission_998/index.html',
u'catalogue/sharp-objects_997/index.html',
u'catalogue/sapiens-a-brief-history-of-humankind_996/index.html',
u'catalogue/the-requiem-red_995/index.html',
u'catalogue/the-dirty-little-secrets-of-getting-your-dream-job_994/index.html',
u'catalogue/the-coming-woman-a-novel-based-on-the-life-of-the-infamous-feminist-victoria-woodhull_993/index.html',
u'catalogue/the-boys-in-the-boat-nine-americans-and-their-epic-quest-for-gold-at-the-1936-berlin-olympics_992/index.html',
u'catalogue/the-black-maria_991/index.html',
u'catalogue/starving-hearts-triangular-trade-trilogy-1_990/index.html',
u'catalogue/shakespeares-sonnets_989/index.html',
u'catalogue/set-me-free_988/index.html',
u'catalogue/scott-pilgrims-precious-little-life-scott-pilgrim-1_987/index.html',
u'catalogue/rip-it-up-and-start-again_986/index.html',
u'catalogue/our-band-could-be-your-life-scenes-from-the-american-indie-underground-1981-1991_985/index.html',
u'catalogue/olio_984/index.html',
u'catalogue/mesaerion-the-best-science-fiction-stories-1800-1849_983/index.html',
u'catalogue/libertarianism-for-beginners_982/index.html',
u'catalogue/its-only-the-himalayas_981/index.html']
아래는 참고 사이트와 발췌했던 코드이다.
참고사이트: https://stackoverflow.com/questions/30492623/using-both-python-2-x-and-python-3-x-in-ipython-notebook
참고2: https://ipython.readthedocs.io/en/stable/install/kernel_install.html#kernel-install 가장 도움이 된 사이트: https://stackoverflow.com/questions/37085665/in-which-conda-environment-is-jupyter-executing
## whitch environment is jupyter executing:
import sys
print(sys.executable)
## create kernel for jupyter notebook
source activate myenv
python -m ipykernel install --user --name myenv --display-name "Python (myenv)"
source activate other-env
python -m ipykernel install --user --name other-env --display-name "Python (other-env)"
http://ipython.readthedocs.io/en/stable/install/kernel_install.html#kernel-install
Comments