반응형

사용자 환경 : macOS Sierra 10.12.6Python 3.6.4PyCharm 2017.3.4 build PC-173.4674.37.






이 글을 읽기 전, 1편 포스팅을 숙지 하셔야 됩니다.





설치는 다 했으니 본격적으로 실행에 옮겨보자.





1. 우선 필요한 파이썬 라이브러리들을 임포트 한다.

from bs4 import BeautifulSoup
from selenium import webdriver




2. driver라는 이름의 변수에 webdriver 객체를 만들어 저장한다.

from bs4 import BeautifulSoup
from selenium import webdriver

# 위치 지정
driver = webdriver.Chrome("(~저장경로)/chromedriver")

저장경로 살피세요




3. Selenium은 기본적으로 웹 자원들이 모두 로드될 때까지 기다려주지만, 암묵적으로 기다리는 시간을 조정할 수 있다.

from bs4 import BeautifulSoup
from selenium import webdriver

# 위치 지정
driver = webdriver.Chrome("(~저장경로)/chromedriver")

# 웹 자원 로드를 위해 암묵적으로 딜레이
delay_time = 3
driver.implicitly_wait(delay_time)




4. 이제 URL을 지정하여 접근하자.

from bs4 import BeautifulSoup
from selenium import webdriver

# 위치 지정
driver = webdriver.Chrome("(~저장경로)/chromedriver")

# 웹 자원 로드를 위해 암묵적으로 딜레이
delay_time = 3
driver.implicitly_wait(delay_time)

# URL 접근
driver.get('https://nid.naver.com/nidlogin.login')




5. 네이버 로그인 화면에서 아이디와 패스워드의 값을 넘기는 폼의 name 값이 각각 id, pw인 것을 확인할 수 있다.





6. webdriver의 find_element_by_name() 함수를 통해 태그를 지정하여 값을 넣어주자.

from bs4 import BeautifulSoup
from selenium import webdriver

# 위치 지정
driver = webdriver.Chrome("(~저장경로)/chromedriver")

# 웹 자원 로드를 위해 암묵적으로 딜레이
delay_time = 3
driver.implicitly_wait(delay_time)

# URL 접근
driver.get('https://nid.naver.com/nidlogin.login')

# ID, PW 입력
id = "본인_네이버_아이디"
pw = "본인_네이버_패스워드"
driver.find_element_by_name('id').send_keys(id)
driver.find_element_by_name('pw').send_keys(pw)




7. 이제 로그인 버튼을 눌러 로그인이 정상적으로 실행되는지 확인한다.

from bs4 import BeautifulSoup
from selenium import webdriver

# 위치 지정
driver = webdriver.Chrome("(~저장경로)/chromedriver")

# 웹 자원 로드를 위해 암묵적으로 딜레이
delay_time = 3
driver.implicitly_wait(delay_time)

# URL 접근
driver.get('https://nid.naver.com/nidlogin.login')

# ID, PW 입력
id = "본인_네이버_아이디"
pw = "본인_네이버_패스워드"
driver.find_element_by_name('id').send_keys(id)
driver.find_element_by_name('pw').send_keys(pw)

# 로그인 버튼 클릭
driver.find_element_by_xpath('//*[@id="frmNIDLogin"]/fieldset/input').click()




8. 로그인 후 실시간 검색어 추출을 위해 네이버 메인으로 이동한다.

driver.get("https://www.naver.com")




9. BeautifulSoup 객체를 이용해 페이지를 분석한다.

driver.get("https://www.naver.com")

html = driver.page_source
soup = BeautifulSoup(html, 'html.parser')




10. 5번에서와 같이 개발자 도구를 통해 실시간 검색어가 어느 태그에 있는지 확인한다.




11. 마지막으로 추출된 값들을 프린트 한다.

driver.get("https://www.naver.com")

html = driver.page_source
soup = BeautifulSoup(html, 'html.parser')

realtime_search_word = soup.select('div.ah_roll_area > ul.ah_l > li > a > span.ah_k')
for list in realtime_search_word:
    print(list.text.strip())






이로써 파이썬과 BeautifulSoup, Selenium, ChromeDriver 등과 같은 라이브러리를 사용하여 네이버에 로그인 후, 실시간 검색어를 추출하는 프로그램을 작성해보았다.












반응형
반응형

사용자 환경 : macOS Sierra 10.12.6Python 3.6.4PyCharm 2017.3.4 build PC-173.4674.37.






먼저 웹 크롤링이란 웹 사이트에서 원하는 정보를 자동으로 수집하는 것을 의미한다.



본인은 크롤링을 위해 파이썬 라이브러리인 BeautifulSoupSelenium을 사용했다.



첫 번째로 BeautifulSoup을 설치해보자.



https://www.crummy.com/software/BeautifulSoup/#Download




빨간줄을 클릭해 다운을 받고 압축을 해제한다.



본인은 맥을 사용하고 있으므로 터미널을 열어 설치를 마무리한다.




1. 압축을 해제한 폴더로 이동한다.

$> cd (압축푼경로~)/beautifulsoup4-4.6.0/



2. 설치한다.

$> python3 setup.py install

본인은 파이썬 2와 3 버전 모두 설치되어 있으므로 python3라는 키워드를 사용했다.




두 번째로는 Selenium을 설치해보자.



먼저 Selenium은 주로 웹 앱을 테스트하는데 이용하는 프레임워크이다. webdriver라는 API를 통해 운영체제에 설치된 Chrome을 제어한다.




1. 터미널을 이용한 Selenium 설치

$> pip install selenium



2. 크롬이 설치되어 있다는 가정하에 ChromeDriver를 다운 및 설치



https://sites.google.com/a/chromium.org/chromedriver/downloads



본인의 OS에 맞게 다운받자.



다운을 받고 압축을 해제하면 chromedriver라는 파일이 생긴다.



이 파일을 본인이 원하는 디렉터리에 보관한다. 이때 이 디렉터리 경로는 Selenium 객체를 생성할 때 필요하기 때문에 아무 곳에 두지 말자.





이번 포스트에서는 BeautifulSoup, Selenium, ChromeDriver를 설치하는 부분만 살펴봤다.



다음 글에서 직접 다뤄보는 부분을 살펴보자!

반응형
반응형

사용자 환경 : macOS Sierra 10.12.6Python 3.6.4PyCharm 2017.3.4 build PC-173.4674.37.






인덱싱에서는 문자열 중에서 어느 위치에 있는 문자를 뽑아낼 때 사용했다.



그렇다면 파이썬 문자열 인덱싱에 대해 다룬 게시글에서 사용했던 예제인 "Life is too short, You need Python"이라는 문자열에서



단순히 한 문자만을 뽑아내는 것이 아니라 "Life" 또는 "You" 같은 단어들을 뽑아내는 방법은 없을까?



다음과 같이 슬라이싱 기법을 이용하면 간단하게 처리할 수 있다.



>>> a = "Life is too short, You need Python"
>>> a[0:4]
'Life'



눈치가 빠른 사람들은 이미 알겠지만, a[0:4]가 뜻하는 것은 문자열 a에서 0부터 4까지의 문자 즉, 첫 번째부터 다섯 번째까지 뽑아낸다.



여기서 다음과 같은 의문이 생길 것이다. a[0]은 'L'이고, a[3]은 'e'니까 a[0:3]으로도 'Life'를 뽑아낼 수 있지 않을까?



>>> a[0:3]
'Lif'



이렇게 되는 이유는 간단하다. a[시작 번호:끝 번호]를 지정하면 끝 번호에 해당하는 인덱스는 포함되지 않기 때문이다.



시작 번호가 항상 0일 필요는 없고, 끝 번호를 생략하면 시작 번호부터 문자열의 끝까지, 시작 번호를 생략하면 문자열의 처음부터 끝 번호까지 뽑아낸다.



의미는 없겠지만 시작 번호와 끝 번호를 모두 생략하면 문자열 전체를 뽑아내고, 인덱싱과 마찬가지로 마이너스 기호를 사용할 수도 있다.



간단한 예제로 다음과 같은 날짜를 나타내는 문자열에서 년, 월, 일을 뽑아내보자.



>>> a = "20180326"
>>> year = a[:4]
>>> month = a[4:6]
>>> day = a[6:8]
>>> year
'2018'
>>> month
'03'
>>> day
'26'






반응형
반응형

사용자 환경 : macOS Sierra 10.12.6Python 3.6.4PyCharm 2017.3.4 build PC-173.4674.37.






인덱싱(Indexing)이란 무엇인가를 '가리킨다'는 의미이다.



>>> a = "Life is too short, You need Python"


위 소스 코드에서 변수 a에 저장한 문자열의 각 문자마다 번호를 매겨 보면 다음과 같다.



 

 

 

 

 

 

 0

 

 

 

 

 

 

 

 

 

 1

 

 

 

 

 

 

 

 

 

 2

 

 

 

 

 

 

 

 

 

 3

 

 

 

 0

 1

 1

 1




이제 다음 예제를 실행해 보자.


>>> a = "Life is too short, You need Python"
>>> a[3]
'e'



a[3]이 뜻하는 것은 a라는 문자열의 네 번째 문자인 e를 말한다. (첫 번째 인덱스가 0이기 때문)




다음은 뒤에서부터 세는 방법이다.


>>> a = "Life is too short, You need Python"
>>> a[-1]
'n'



a[-1]이 'o'가 아닌 'n'인 이유는 0과 -0은 같기 때문에 뒤에서부터 세는 경우에는 첫 번째가 -1이 된다.





-

반응형
반응형

사용자 환경 : macOS Sierra 10.12.6Python 3.6.4, PyCharm 2017.3.4 build PC-173.4674.37.






먼저 파이썬이 설치되어 있는지 터미널을 열어 확인해보자.



$> python --version
Python 2.7.10


그럼 위와 같이 Python 2.7.10이라는 문구가 나타날 것이다. (버전이 다를 수 있고, 설치가 안되어 있을 수도 있다)



앞으로 파이썬을 배우면서 3 버전대를 사용할 것이기 때문에 파이썬 3가 설치되어 있는지 다시 한 번 터미널에서 확인해보자.



$> python3 --version
-bash: python3: command not found


위와 같이 -bash: python3: command not found 이라고 나오면 설치가 안되어 있는 것이다.



이제 https://www.python.org/downloads/mac-osx/ 에 접속하여 파이썬 3를 설치해보자.





빨간색으로 밑줄 친 부분을 클릭해 페이지를 이동한 후,





역시 빨간색으로 밑줄 친 부분을 클릭해 파일을 다운받고 설치한다.



설치는 어려운 부분이 없으니 생략하도록 하고 설치 후 터미널을 열어 제대로 설치되었는지 확인해보자.



$> python3 --version
Python 3.6.4


위와 같이 잘 나온다면 성공적으로 설치한 것이다.






반응형

+ Recent posts