반응형

파이썬의 삼항연산자는 자바, C와는 다르게 사용한다.
자바와 C는 [ Boolean : True ? False ]의 형태를 가지지만, 파이썬은 비슷하지만 다른 형태를 가진다.


형태는 아래와 같다

[ True if Boolean else False ]


자바, C와는 다르게 if와 else를 이용한다.

예제를 만들어 보자

a = "참이다" if 1 == 1 else "거짓이다"

는 if와 else 사이의 boolean이 true이므로 a에는 "참이다" 가 들어가게 된다.


자바, C와 마찬가지로 중첩해서 사용하는 것도 가능하다. 

Posted by NULL..
,
반응형

이번에는 자바스크립트, Jquery 코드를 실행시키는 방법을 알아보자.


페이지에서 버튼을 클릭해서 다른 페이지로 이동한다던가,

데이터 수집 중 불필요한 값을 제거 후 가져온다던가,

스크립트를 이용해 리턴값을 받는 일 등에 사용할 수 있다.


먼저 자바스크립트 사용 방법부터 알아보자.

execute_script 함수를 사용하면 자바스크립트 코드를 실행시킬 수 있다.

사용 방법은 아래와 같다.

driver.execute_script('스크립트', '파라미터')

스크립트 부분에 'return 스크립트'를 이용하면 리턴값을 받을 수 있고,

argument[0]를 이용하면 find_~ 함수로 찾은 객체를 파라미터 부분에 넣어클릭 등의 액션을 줄 수도 있다.


실제 작동하는 코드를 작성해보자.

from selenium import webdriver

driver = webdriver.Chrome('chromedriver.exe')
driver.execute_script("alert('자바스크립트 코드 적용!!');")

# 코드 해석

3. 크롬 드라이버 로드

4. 자바스크립트 코드 실행 ( alert 띄우기 )


잘 작성했다면 크롬이 실행된 후 alert이 하나 뜰 것이다.


다음은 Jquery를 적용하는 방법이다.

사용 방법은 자바스크립트와 마찬가지로 execute_script 함수를 사용하면 된다.

스크립트 부분에 Jquery 코드를 작성하면 잘 동작하지만 사이트에 따라 Jquery 코드가 작동하지 않는 경우가 있는데, 이럴 때에는 Jquery 코드를 적용 후 사용하면 된다.

from selenium import webdriver

driver = webdriver.Chrome('chromedriver.exe')

f = open('jquery-3.2.1.min.js', 'r')
driver.execute_script(f.read())
f.close();

driver.execute_script('스크립트', '파라미터')

# 코드 해석

3. 크롬 드라이버 로드

5. Jquery 파일 읽음

6. 드라이버에 적용

7. 파일 객체를 닫음


이렇게 하면 Jquery 코드를 사용할 수 있다.

다만 get 함수를 이용해 새 페이지로 이동하면 당연하게도 코드가 바뀌기 때문에 다시 Jquery를 읽어들여야 한다.



[ 이전 글 보기 ]

2018/02/11 - [Python] - [파이썬 크롤링] selenium을 이용해 크롤링하기1 (크롬 실행)

2018/02/11 - [Python] - [파이썬 크롤링] selenium을 이용해 크롤링하기2 (데이터 가져오기)




Posted by NULL..
,
반응형

이번에는 실행된 크롬에서 데이터를 가져오는 방법을 보자.


webdriver에는 find~로 시작하는 여러 함수들이 있다.

이 함수들이 실행된 브라우저에서 값을 찾는 역할을 수행한다.


css, xpath 등의 값을 이용할 수 있으며, 하나의 엘리먼트, 복수의 엘리먼트 검색이 가능하다.


ex)

driver.find_element_by_css_selector("Selector") 하나의 엘리먼트 검색
driver.find_elements_by_css_selector("Selector") 복수의 엘리먼트 검색


이렇게 검색된 엘리먼트에서 값을 가져오는 방법은 아래와 같다.

ex)

엘리먼트.text 엘리먼트에 있는 텍스트
엘리먼트.get_attribute("AttributeName") 엘리먼트에 있는 attribute 값


그럼 이를 이용하는 코드를 작성해보자.

수집 대상은 네이버뉴스의 이 시각 주요뉴스 타이틀들이다.

포스팅 작성하는 시점에 타이틀의 css는 ".newsnow_tx_inner" 이다.


from selenium import webdriver

driver = webdriver.Chrome('chromedriver.exe')
driver.get("http://news.naver.com/main/home.nhn")

titleEles = driver.find_elements_by_css_selector(".newsnow_tx_inner")
for title in titleEles :
    print(title.text)

# 코드 해석

3. 크롬 드라이버 로드

4. 네이버 뉴스 페이지로 이동

6. '이 시각 주요뉴스'의 엘리먼트를 수집 (복수)

7~8. 반복하며 타이틀 출력


잘 작성했다면 주요뉴스 10개의 타이틀이 출력되는 것을 볼 수 있다.



[ 이전 글 보기 ]

2018/02/11 - [Python] - [파이썬 크롤링] selenium을 이용해 크롤링하기1 (크롬 실행)


Posted by NULL..
,
반응형


파이썬 크롤링은 간단하게 requests와 beautifulsoup을 이용할 수 있지만,

사이트에서 차단되어있는 경우나 페이지에 ajax를 이용해 데이터를 로드하고 있는 경우에는 해당 데이터를 가져올 수 없는 문제가 있다.


이러한 문제들을 해결하기 위해 selenium을 이용한다.


selenium을 사용하기 위해서는 우선 인스톨이 필요하다.

pip install selenium


selenium의 webdriver로 브라우저를 직접 띄워 제어가 가능하다.

익스플로러, 크롬, 파이어폭스 등 다양한 브라우저가 있지만 크롬을 이용하도록 하겠다.

당연한 이야기지만 제어하기 위해서는 크롬이 설치되어 있어야 하며,

크롬 드라이버 라는 것도 필요하다. 아래의 링크에서 받을 수 있다.

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


드라이버 버전별로 지원하는 크롬 버전이 표시되어 있으나, 버전이 딱 맞지 않더라도 크게 문제없이 작동하는 것으로 보인다.


준비가 완료되었으면 브라우저를 띄워보도록 하자.

코드는 아래와 같다.

from selenium import webdriver

driver = webdriver.Chrome('chromedriver')

'chromedriver' 부분에는 위에서 받은 크롬드라이버의 경로를 지정해주면 된다.

여기까지 잘 작성했다면 실행 후 약 3초 뒤 크롬이 실행 될 것이다.


다음은 웹 페이지로 이동하는 방법이다.

웹 페이지로 이동은 get 함수를 이용한다.

from selenium import webdriver

driver = webdriver.Chrome('chromedriver.exe')

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

실행하면 크롬이 실행된 후 네이버 페이지가 뜨는 것을 확인 할 수 있다.



Posted by NULL..
,