DevSSOM

파이썬 크롤링 실습 - 네이트 최신뉴스 링크 수집하기 본문

Python/크롤링

파이썬 크롤링 실습 - 네이트 최신뉴스 링크 수집하기

데브쏨 2021. 6. 30. 20:12
반응형

네이트 최신뉴스 href 수집하기

웹 페이지 href 링크들을 수집하여 리스트형 변수 list_href에 담아 출력해보기.

https://news.nate.com/recent?mid=n0100

 

전체 - 최신뉴스 : 네이트 뉴스

 

news.nate.com

출력 예시

[href1, href2, ----]

해야할 것

  1. a 태그가 있는 div 태그 및 class를 찾기.
  2. find("a")["href"]로 속성값 href의 데이터를 추출.
  3. 추출한 href 문자열 앞에 "https:" 를 앞에 붙여 완벽한 링크로 만들기.
import requests
from bs4 import BeautifulSoup

    
def get_href(soup) :
    # 각 기사에 접근할 수 있는 href를 리스트로 반환
    return None
    

def main() :
    list_href = []
    
    # href 수집할 사이트 주소 입력
    url = "https://news.nate.com/recent?mid=n0100"
    req = requests.get(url)
    soup = BeautifulSoup(req.text, "html.parser")
    
    list_href = get_href(soup)
    
    print(list_href)


if __name__ == "__main__" :
    main()

 

 

 

 

>>>

 

크롬에서 구글 검사로 네이트 뉴스 HTML 확인. 링크를 담은 <a>태그는 <div class="mlt01">에 담겨있고, 또 위로 올라가보면, <div class="mduSubjectList">와 더 위에 <div class="postSubjectContent">에 속해있음. 보니까<div class="mduSubjectList">가 하나의 기사 각각을 나타내고 있음. 그래서 우리는 <div class="mduSubjectList">를 먼저 찾고, 그 속에 있는 <a>태그의 하이퍼링크를 찾는 걸로.

 

def get_href(soup) :
    # 각 기사에 접근할 수 있는 href를 리스트로 반환
    
    div_list = soup.find_all("div", class_="mduSubjectList")
    
    for div in div_list:
        print(div.find("a")["href"])

 

그런데 앞에 https:가 빠져서 출력이 되니까 이걸 넣어주고, 결과값들도 리스트에 넣어주는걸로 코드를 수정.

def get_href(soup) :
    # 각 기사에 접근할 수 있는 href를 리스트로 반환
    
    div_list = soup.find_all("div", class_="mduSubjectList")
    
    result = []
    
    for div in div_list:
        result.append("https:" + div.find("a")["href"])
    
    return result

 

 

최종 코드

import requests
from bs4 import BeautifulSoup

    
def get_href(soup) :
    # 각 기사에 접근할 수 있는 href를 리스트로 반환
    
    div_list = soup.find_all("div", class_="mduSubjectList")
    
    result = []
    
    for div in div_list:
        result.append("https:" + div.find("a")["href"])
    
    return result
    

def main() :
    list_href = []
    
    # href 수집할 사이트 주소 입력
    url = "https://news.nate.com/recent?mid=n0100"
    req = requests.get(url)
    soup = BeautifulSoup(req.text, "html.parser")
    
    list_href = get_href(soup)
    
    print(list_href)


if __name__ == "__main__" :
    main()

 

728x90
반응형
댓글