처음 셀레니움을 선택하게된건 순전히 구글 때문이다.
다른 웹사이트도 마찬가지이지만, 정보만 쏙 빼가는 프로그램을 그리 좋아하지 않는다.
즉 프로그램을 제작해도 단순해서는 금방 막히기 쉽다는 단점이 있기 때문이다.
빠른 시간 내 접속하여 필요정보는 긁어가는 일을 반복하면 해당 아이피를 차단해버리는
일도 있다고 한다.
유튜버 노마드 코더님이 보여준 인스타그램 자동팔로워늘리기 프로그램에서도 빠른시간 내에 반복작업을 수행하니
금방 블록되는 것을 확인할 수 있었다.
셀레니움을 이용하면 동작은 비록 더 느리지만 왠만해서는 막힐일이 없다는 것이 장점이 되겠다.
웹브라우저를 설치하여 마치 유저가 하는 것마냥 마우스를 움직여 클릭해주는 방식으로 동작을 한다.
물론 막으려고하면 얼마든지 막을 수는 있겠지만 말이다.
그래서 처음 유튜버 조코딩(완성된 소스는 옆 링크를 클릭하여 확인하도록 하자) 님께서 강의하신 셀레니움을 이용해 구글의 이미지를 크롤링하는 방법을 따라해보고 실습해보는 것으로 가닥을 잡았으나, 완성을 해본 뒤 이를 응용하여 포털사이트의 뉴스 헤드라인을 긁어보는 방법을 실습해야 겠다는 생각이 들었다. (절대 강의 내용 정리가 귀찮아서 그런건 아니다.)
이번에는 beautifulsoup4를 설치하여 실시한다.
pip install BeautifulSoup4 를 터미널에 입력한다
설치가 완료되었다면 bs4를 사용하기 위한 기본입력을 한다.
from urllib.request import urlopen
from bs4 import BeautifulSoup
그리고 필요한 정보를 가져올 사이트 주소를 입력한다.
html = urlopen("https://news.naver.com/")
그 후 어떤정보를 가져와야 할지 해당 페이지로 이동하여 알아보자.
해당페이지에서 F12번을 눌러주면 홈페이지의 소스코드를 볼 수 있다.
거기서 마우스 모양을 눌러준 후 클래스를 알고 싶은 데이터를 클릭하여 보자.
바로 유튜브에서 코드를 찾아 확인해본다.
이대로 돌리면되겠지 싶었는데 오류가 발생했다.
쏼라쏼라 뭔지는 몰라도 내가 작성한 코드의 4번째줄 즉 urlopen이 안되는 것을 알 수 있다.
결국 네이버에서 크롤링을 막아둔 것으로 봐야하는것 같다.
어떻게 확인을 하냐면, 다른 사이트를 입력해보면 된다. 주소만 news.daum.net으로 변경해보니
즉시 동작하는 것을 알 수 있다.
정상적으로 동작은 하지만, 다른 텍스트 파일을 같이 읽어오기 때문에 원하는 정보만 뽑는 방법을 찾아본다.
우선은 개발자도구에서 뉴스기사에 들어가는 클래스를 확인해보자.
공통적으로 link_txt라는 클래스를 사용하고 있다.
이에 위와같은 코드를 작성하고 실행시켜본다.
위와 같이 실행하려면 requests도 설치해야 한다. 터미널에서 pip install requests를 실행시키자.
군더더기 없이 헤드라인만 뽑아오는 것을 알 수 있다.