Selenium 5

[1] 네이버 뉴스 댓글 크롤러_ver2

네이버 뉴스 기사량이 많아 팀원과 작업을 분배하여 2019년 기사를 수집했다. ver1.5의 크롤러를 수정했다. 작업을 통해 얻고자 하는 결과물은 네이버에서 '주52시간'으로 검색했을 때 나오는 2019년의 모든 기사들 중 네이버 뉴스 플랫폼에 등록된 기사들의 기사 제목, 언론사, 기사 작성 시간, 댓글 수, 댓글 작성자, 댓글 내용, 댓글 공감/비공감 수이다. # 변수 설정 1년치 기사량이 많아 한 번에 크롤링할 수 없다. 한 달씩 나누어 작업을 진행했다. 월별로 기간을 지정해 기사를 검색하고, 기사 양에 맞게 최대 페이지를 지정해 준다. 다행히 한 페이지당 10개씩 기사가 보여지기 때문에, 페이지를 지정하는 일이 쉬웠다. URL이 조금 달라졌는데, 시작 날짜를 나타내는 ds, 종료 날짜를 나타내는 d..

[1] 네이버 뉴스 댓글 크롤러_ver1.5_검색페이지 확대

ver1의 크롤러를 조금 수정하여 최대 검색 페이지 숫자를 지정하여 크롤링하도록 함수를 수정했다. 작업을 통해 얻고자 하는 결과물은 '주52시간'으로 검색했을 때 나오는 모둔 기사들에서 스크레이핑한 필요한 정보들이다. # 검색 페이지 지정 ver1의 함수에서 크게 달라진 것은 없다. 다만, 어차피 네이버는 최대로 제공하는 검색 결과 페이지가 400페이지 까지이기 때문에, 마지막 페이지를 얻는 함수를 없애고, 검색 페이지를 변수로 지정하여 해당하는 페이지까지 루프를 돌면서 네이버 뉴스 링크를 모아 오는 방식으로 함수를 수정했다. 실행할 main 함수에서 검색 페이지는 전역 변수로 설정했다. # 변수 설정 QUERY = "주52시간" search_QUERY = urllib.parse.urlencode({'q..

[1] 네이버 뉴스 댓글 크롤러_ver1_4. 데이터 저장 및 마무리

이번 단계의 작업에서는 크롤러를 통해 뉴스 기사 댓글을 스크레이핑하고, 그것을 저장하는 함수를 만든다. 작업을 통해 얻고자 하는 결과물은 크롤러가 직접 네이버 뉴스 홈에서 '주52시간'을 검색하여 찾아낸 마지막 페이지 범위까지의 기사들 중, 네이버 뉴스 플랫폼에 등록된 모든 기사들에서 스크레이핑한 플랫폼 정보(NAVER), 기사 제목, 기사 작성 시간, 언론사, 댓글 작성자, 댓글 작성 시간, 댓글 내용, 댓글 공감/비공감 수이다. # 사용한 라이브러리 Requests, Selenium, time, BeautifulSoup, urllib.parse, re : 이전과 동일. csv # csv 파일로 저장하기 csv 모듈을 이용해 csv 파일로 저장하는 함수를 만든다. 아래 함수는 리스트를 인자로 받아 리스..

[1] 네이버 뉴스 댓글 크롤러_ver1_3. Selenium 이용

동적으로 변화하는 컨텐츠인 댓글을 크롤링하기 위해서는 Selenium을 이용해야 한다. 작업을 통해 얻고자 하는 결과물은 Selenium을 이용해 추출한 모든 네이버 뉴스 링크들의 뉴스 플랫폼, 제목, 작성 시간, 언론사, 댓글 작성자, 작성 시간, 댓글 내용, 댓글 공감/비공감 수이다. # 사용한 라이브러리 Requests Selenium BeautifulSoup, re, time, urllib.parse # Selenium을 이용해 html 페이지 불러오기 웹 드라이버의 .page_source를 활용해 브라우저에 보이는 상태 그대로의 HTML을 가져온다. requests를 사용할 때와 달리, 웹 브라우저 엔진이 DOM이 바뀌는 상태를 기다릴 수 있도록 기다려야 한다. Selenium의 묵시적 대기로 ..

[1] 네이버 뉴스 댓글 크롤러_ver1_2. 각 기사 링크 페이지에 접속해 정보 가져오기

받아 온 뉴스 링크에서 댓글 링크를 통해 댓글 페이지에 접속하고자 한다. 접속 후, 댓글 관련 정보를 제외한 기사 제목, 기사 작성 시간, 언론사 정보까지 가져온다. 이로써 접속하여 데이터를 정상적으로 받아올 수 있는지 확인한다. 작업을 통해 얻고자 하는 결과물은 이전 단계에서 추출한 모든 네이버 뉴스 링크들의 제목, 작성 시간, 언론사이다. # 댓글 페이지 접속하기 사전 작업에서 확인했듯, 댓글 페이지의 URL에는 'm_view=1'이 붙는다. 따라서 이전 단계에서 찾은 모든 네이버 기사 URL의 뒤에 '&m_view'를 붙여 준다. 출력 상태 코드를 확인하여 제대로 실행되는지 확인한다. naver_news_links = get_news_links(last_page, LINK_PAT) for link ..