Appia의 IT세상

[파이썬 크롤링]네이버 스포츠 추천 뉴스 크롤링 하여 제목 출력하기 (bs4, requests) 본문

Python/Python Crawler[크롤러]

[파이썬 크롤링]네이버 스포츠 추천 뉴스 크롤링 하여 제목 출력하기 (bs4, requests)

Appia 2021. 8. 18. 06:59
반응형

[파이썬 크롤링]네이버 스포츠 추천 뉴스 크롤링 하여 제목 출력하기 (bs4, requests)

[파이썬 크롤링]네이버 스포츠 추천 뉴스 크롤링 하여 제목 출력하기 (bs4, requests) 

요새 한참 웹페이지 크롤링에 대해서 열을 올리고 있습니다. 그중에서, 오늘은 네이버에 특정 부분에 대해서 크롤링 해보는 작업을 해볼까 합니다. 먼저, 다음 보이는 네이버의 추천 뉴스 부분에 대해서 파싱하는 것에 대해서 이번 포스팅을 통해서 이야기를 해볼까 합니다. 

크롤링하고자 하는 내용

그럼 먼저, 위에부분을 파싱하기 전에 어떤 부분에 관련된 내용이 쓰여져 있는지에 대해서 HTML 소스 코드 보기로 확인해보겠습니다. 다음 링크를 통해서 HTML 소스 코드를 살펴보겠습니다. 

[윈도우10 Windows10]크롬(Chrome) 웹사이트 HTML 코드 확인하기

 

[윈도우10 Windows10]크롬(Chrome) 웹사이트 HTML 코드 확인하기

[윈도우10 Windows10]크롬(Chrome) 웹사이트 HTML 코드 확인하기 크롤링을 하다보면, 자연럽게 해당 웹 사이트의 HTML을 자주 보게 됩니다. 하지만, 우리가 흔히 보이는 웹사이트에서는 관련된 정보

appia.tistory.com

그러면, 위의 추천 뉴스의 한 부분을 복사하신 후에 "Ctrl+F"키를 누르셔서, 해당 부분을 붙여넣기 하여 검색을 해봅니다. 그럼 해당 부분에 대해서 다음과 같은 부분을 확인해야하는 것을 알 수 있습니다. 

<ul class="home_news_list">

 

<span>

HTML소스 코드 보기 결과 

그리고 그리고 약간의 소스 코드 보기를 검토하다보니, 다음과 같은 부분들 또한 확인하였습니다. 

<ul class="home_news_list division">

그럼 위의부분을 이용하여 파싱을 해보도록 하겠습니다. 저의 경우 BeautifulSoup과, request를 이용하였습니다. 

import requests
from bs4 import BeautifulSoup

res = requests.get("https://sports.news.naver.com/wfootball/index")
soup = BeautifulSoup(res.content, 'html.parser')

# 먼저 "home_news_list", "home_news_list division"을 가지는 클래스에 해당하는 ul 태그 부분을 저장하였습니다.
mydata = soup.find('ul', class_="home_news_list")
mydata1 = soup.find('ul', class_="home_news_list division")

# 그런 후에 해당 하는 span 태그를 가지는 부분을 별도로 저장하였습니다. 
recommend_list = mydata.find_all('span')
recommend_list1 = mydata1.find_all('span')

#반복문을 이용하여 해당 부분에 대해서 출력하였습니다. 
for item in recommend_list:
    v = item.get_text()
    print(v)
    
for item in recommend_list1:
    v = item.get_text()
    print(v)

위의 부분을 이용하여 최초 파싱하면 다음과 같은 결과가 나타납니다. 

추천뉴스 출력결과 

앞의 공백 때문에 약간 보기 싫기도 하고, 테스트를 정확하게 인지할 수 없는 단점이 있었습니다. 그래서, 이스케이프 문자인 "\n", "\t"을 없애고 출력을 해보도록 하겠습니다. 이스케이프 문자인 "\n", "\t"을 없애기 위해서 replace 를 이용하였습니다. 

 

import requests
from bs4 import BeautifulSoup

res = requests.get("https://sports.news.naver.com/wfootball/index")
soup = BeautifulSoup(res.content, 'html.parser')
mydata = soup.find('ul', class_="home_news_list")
mydata1 = soup.find('ul', class_="home_news_list division")
recommend_list = mydata.find_all('span')
recommend_list1 = mydata1.find_all('span')
for item in recommend_list:
    v = item.get_text()
    # 탭을 가리키는 \t 부분을 삭제하였습니다. 
    v1 =v.replace("\t","")
    # 줄바꿈을 가리키는 \n 부분을 삭제하였습니다. 
    v1 =v1.replace("\n","")
    print(v1)
    
for item in recommend_list1:
    v = item.get_text()
    v1 =v.replace("\t","")
    v1 =v1.replace("\n","")
    print(v1)

위의 코드를 이용하니 다음과 같은 결과가 나타났습니다. 

텍스트 정리 후 추천뉴스 출력결과 

훨씬 앞선 결과보다 보기 좋은 것을 알 수 있습니다. 이와 같은 방법으로 네이버의 추천뉴스 부분을 파싱해봤습니다. 

 

Python[파이썬 웹크롤러] 04-WebCrawler beautifulsoup4(뷰티풀 수프)설치하기

 

Python[파이썬 웹크롤러] 04-WebCrawler beautifulsoup4(뷰티풀 수프)설치하기

Python[파이썬 웹크롤러] 04-WebCrawler beautifulsoup4 (뷰티풀 수프)설치하기 및 필요성 많은 웹 크웹크롤러(WebCrawler)를 생성하는 사람들이 매우 많습니다. 그 중에서 파이썬을 사용하는 대부분 사람들은

appia.tistory.com

이번 포스팅에서는 [파이썬 크롤링]네이버 스포츠 추천 뉴스 크롤링 하여 제목 출력하기 (bs4, requests)라는 주제로 간단히 포스팅을 해봤습니다. 생각보다 간단하고 직접 활용할 수 있는 부분이기 때문에 매우 활용도가 놓을 것 같습니다. 혹 궁금하신 점이나 문의 사항이 있으시면 언제든지 댓글 및 방명록에 글 남겨주시길 바랍니다. 감사합니다. 

반응형
Comments