이번 포스팅에서는 python 언어를 활용하여 특정 페이지의 내용들을 모아오는 크롤링이라는것을 해볼것이다.
잘 활용을 하게 된다면 자신이 필요한 정보만 잘 획득해오도록 코딩을 짤수가 있을것이다.
환경
- python3.7버전
- vscode
- chrome 브라우저
- selenium
vscode설치 관련은 아래 참고 포스팅을 확인하도록 하자.
먼저 vscode에서 작업을 할 경로를 선택해서 폴더를 열고 아무 이름이나 해서 test.py 이런식으로 파이선파일을 하나 생성한다.
파이선이 처음이라면 자동으로 vscode에서 python관련 파일들을 설치하라고 나오는데 그냥 install 을 눌러주면 된다.
그리고 크롬브라우저를 코드상에서 열기 위해서 chromedriver를 자신의 os 버전에 맞게 설치를 하고 좀전에 만든 파일과 같은 경로에 두도록 한다.
설치는 여기서 진행을 한다.
https://chromedriver.chromium.org/downloads
그리고 나서 만든 파이선 파일에 크롤링을 위한 라이브러리인 selenium을 import 시키고 chromedriver를 불러온다.
읽어올 페이지는 자신이 필요한 페이지를 하면 되지만 지금은 테스트 및 실습이라서 그냥 네이버 뉴스 기사를 불러와보도록 하겠다.
그렇게 하면 여기까지 작성을 할수가 있다.
from selenium import webdriver
driver = webdriver.Chrome('./chromedriver')
driver.get('https://news.naver.com/main/main.naver?mode=LSD&mid=shm&sid1=105')
그러고 저 url 주소로 가서 F12를 눌러보도록 한다. 그럼 아래 사진과 같은 창이 뜬다.
오른쪽 편에 이렇게 창이 추가로 뜰것이고,
여기에서 빨간 동그라미 부분을 눌러주고 기사에 마우스를 가져다대보면 영역 표시가 되면서 아래 사진철럼 된다.
그리고 마우스로 그부분을 클릭해보면 오른쪽 빈 화면에서 코드들로 탭이 바뀐다.
여기서 보이는 코드는 html 코드이다.
지금 보이는 여기 영역의 글들을 가져올 것이다.
사람은 눈으로 영역을 확인할수 있지만 컴퓨터가 영역을 이해하기 위해서는 코드로 입력을 해줘야하고,
그러기 위해서는 영역의 이름을 알아야 컴퓨터에게 인식을 시킬수 있다.
이름은 오른쪽에 html로 짜여진 코드에서 태그 명이나 id, 클래스 명 등으로 알아올수 있다.
지금 오른쪽 사진에서 html에 표시된 글을 보면
<td class="aside"> ... </td>
로 되어있는데 왼쪽 편에 아래로 화살표를 눌러보면 확장이 된다.
그래서 확대를 하면서 영역을 확인하다 보면 결국 저부분을 감싸고 있는 태그의 가장 최소가 화면과 같다는것을 알게 된다.
그리고 옆에 글은
<ul class="section_list_ranking_press _rankingList" id="_rankingList0" style="display: block">
...</ul>
이렇게 되어있다.
여기서 주목할 점은 class= 의 따옴표 안의 값과 id= 따옴표 안의 값이다.
검색을 해보니 id의 _rankingList0 은 유일하게 여기뿐이라서 저 id 값을 가지고 데이터를 읽어와보도록 할것이다.
만약 유일하지 않다면 상위로 올라가면서 유일한 이름으로 되어있는 이름을 찾아주면 된다.
그럼 아까 만든 코드에서 코드를 추가해보도록 한다.
ultag = driver.find_element_by_id('_rankingList0')
print(ultag.text)
의미는 driver에서 find element by id 라는 메서드를 통해서 '_rankingList0'이라는 이름을 가진 id의 값을 ultag라는 변수에 저장을 하고 print를 해주는것이다.
여기까지 진행을 해보고 run을 해보면 자동으로 보이는 기사 제목들이 터미널에서 출력이 되는것을 확인할수 있다.
다음 포스팅에서는 전체 태그가 아닌 반복문을 통해서 하나하나 기사의 제목을 확인해보고 하나씩 가져오는 연습을 이어서 진행해볼것이다.
참고 포스팅
https://thenicesj.tistory.com/13
'IT > Python' 카테고리의 다른 글
python 크롤링 part.6 (31) | 2022.02.23 |
---|---|
python 크롤링 part.5 (26) | 2022.02.22 |
python 크롤링 part.4 (46) | 2022.02.21 |
python 크롤링 part.3 (47) | 2022.02.20 |
python 크롤링 part.2 (30) | 2022.02.19 |
댓글