Anaconda 설치후 가상환경설정 + Selenium실행

|

아나콘다에서 셀레니움 사용하기

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버전이 안 보이는 문제가 있다.

jupyterErr0

해결법

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

이제 다시 쥬피터 노트북을 실행하면 두 개의 버전이 보일 것이다. jupyterErr

모든 것이 정상인지는 다음처럼 파이썬 2에서만 작동하는 print를 코딩해 확인할 수 있다. jupyterErrFixed2

2. selenium 사용하기

설치

간단히 아래와 같은 순서로 설치한다.

  1. chromeDriver 설치하기( 구글링해서 간단히 설치하면 됨)
  2. chromeDriver를 다운로드 후에 selenium101 폴더에 복사한다.
  3. 셀레니움 설치하기

콘다환경에서 셀레니움 설치하는 법은 다음과 같다.

$ conda install selenium

실행

이제 $ ipython 명령어ipython을 실행하거나 또는 $ juyiter notebook을 타이핑해 쥬피터노트북을 실행한다.

In [1]: from selenium import webdriver

그 다음 아래처럼 하면 크롬 창이 뜰 것이다.

In [3]: driver = webdriver.Chrome('/Users/eddiek/selenium101/chromedriver')

img

창을 닫지 말고 이어서 아래 명령어를 타이핑한다

In [6]: driver = webdriver.Chrome('/Users/eddiek/selenium101/chromedriver')
In [7]: driver.get('http://www.google.com')

크롬에서 원하는 페이지로 이동할 것이다 img2

이것 저것 만져보자

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