본문 바로가기
Project/Auto Upload

[파이썬] 셀레니움 selenium 웹 크롤링 시작

by 졸린이 2021. 8. 31.
반응형

1. [파이썬] 셀레니움 selenium 웹 크롤링 시작 (현재 글)

2. [파이썬] selenium 크롤링, 데이터 수집 ID, TAG, href 찾기

3. [깃허브] github에 vs code project 올리기, 업로드, Push

4. 티스토리 자동 글쓰기 API Authentication Code & Access Token 발급 

5. [파이썬] 티스토리 API 이용 자동 글쓰기. 파이썬 request post

6. [파이썬] 뉴스 크롤링 티스토리에 자동 업로드하기 (마무리)

7. [파이썬] 윈도우 작업 스케줄러에서 파이썬 자동 실행시키기

 

** 전문성이 부족하고 그저 구글링과 실제 경험에 의존한 포스팅임을 유의해주세요. 정답은 없고 저는 이렇게 했습니다.

데이터 수집

파이썬으로 헤드라인 뉴스들을 크롤링 해서 티스토리 자동 업로드 해주는 프로그램을 코딩해보려 한다.

selenium이란 모듈을 설치하여 크롬을 제어하여 크롤링해보려 한다.

 

크롤링 혹은 스크래핑이라고도 한다.

두 용어를 약간 다른 의미로 해석해서 사용하기도 하는데 무지한 나로서는 잘 모르겠다.

구글링 해보고 얕은 수준으로 알아봤을 때는 크롤링은 데이터 수집, 스크래핑은 수집한 데이터를 가공하는 것 같은데 혼용해서 써도 무방할 것 같은 안일한 생각도 든다. 여기서는 그냥 나한테 익숙한 크롤링으로 통일해서 사용한다.

 

Selenium 또는 Beautiful Soup 두 가지로 크롤링을 할 수 있는데 두 개의 차이점은 정확히 설명하는데는 나는 잘 모르겠고 그저 내 경험상으로는 Beautiful Soup은 html 크롤링, div나 li 같은 요소들을 한번에 긁어올때 편한 것을 느꼈다.

 

Selenium은 웹자체를 제어하고 특정 데이터를 가져오는데 좀 더 편한 느낌이 있었다.

버튼이나 링크 클릭, input box 입력, 특정 id 요소 data 수집할 때 쓰면 좋은 것 같다.

개발환경

os : 윈도우

python : 3.9.4버전

dev tool : visual studio code

파이썬은 아나콘다로 설치했다.

따로 설치해도 상관없지만 그게 편했다.

아나콘다 설치

 

아나콘다를 설치하면 주피터 노트북으로 파이썬을 실행해도 상관없지만 나는 배치파일로 실행시킬 거기 때문에

vs Code로 코드를 작성하고 돌린다.

코드작성

파이썬 작업 폴더를 생성하고 거기에 crawling.py 파일을 생성하고 코드를 작성했다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from selenium import webdriver
 
import chromedriver_autoinstaller
 
chrome_ver = chromedriver_autoinstaller.get_chrome_version().split('.')[0]
 
try:
    driver = webdriver.Chrome(f'./{chrome_ver}/chromedriver.exe')
except:
    chromedriver_autoinstaller.install(True)
    driver = webdriver.Chrome(f'./{chrome_ver}/chromedriver.exe')
driver.implicitly_wait(10)
 
naverNewsUrl = 'https://news.naver.com/'
driver.get(naverNewsUrl)
cs

line 1 : from selenium import webdriver

셀레니움을 사용할 것이므로 import해준다.

 

이건 따로 install 시켜줘야 되는데 터미널에서 pip install selenium 명령어를 입력해준다.

$ pip install selenium

line 3 : import chromedriver_autoinstaller

크롤링을 하기 위해선 chromedriver.exe 파일이 필요하다. 이것은 현재 사용 크롬 버전에 맞게 설치해서 작업환경 폴더에 넣어줘서 사용해도 되는데 크롬버전이 바뀌면 이 파일도 바꿔줘야 한다.

그게 귀찮으니 버전을 검사해 맞게 설치해주기 위해 import 해준다.

이것도 터미널에서 install 해줘야 한다.

$ pip install chromedriver_autoinstaller

line 5 : get_chrome_version()으로 현재 크롬 버전을 읽어오고 chrome_ver 변수에 담아준다.

line 7~12 :

try, except 문으로 현재 디렉토리에 chromedriver가 있는지 확인하고 없으면 install 한다.

line 14 : naverNewsUrl 변수에 네이버 뉴스 링크를 담아주고

line 15 : driver.get()으로 링크를 담아서 driver에 넘겨준다.

이렇게 설정한 url로 들어가게 된다.

Chrome이 자동화된 테스트 소프트웨어에 의해 제어되고 있습니다. 문구가 붙은 크롬이 켜진다.

이어서는 다음 포스팅에서..

 

아래 포스팅을 참고했습니다.

https://pythondocs.net/selenium/%EC%85%80%EB%A0%88%EB%8B%88%EC%9B%80-%EC%9B%B9-%ED%81%AC%EB%A1%A4%EB%A7%81-%EB%B4%87-%ED%83%90%EC%A7%80-%EC%9A%B0%ED%9A%8C/

 

셀레니움 웹 크롤링 봇 탐지 우회 - 뻥뚫리는 파이썬 코드 모음

셀레니움을 사용하다보면 어떤 웹사이트에서는 작동이 되지 않거나, 혹은 봇이 탐지되었다고 거부를 당하는 일이 있다. 셀레니움 웹 크롤링 봇 탐지 우회하는 방법을 찾아 이곳까지 왔다면 정

pythondocs.net

 

반응형

댓글