Beautiful soup만으로 네이버 뉴스 제목 크롤링 해보기 (feat, colab)

2022. 4. 4. 04:35Python

반응형

 

요즘 느끼는 건데 python을 활용해 크롤링을 하는 것은 정말 흔해진 것 같다.

라떼만 해도 강의 들으면서 셀레니움도 설치해보고 정적 크롤링, 동적 크롤링 배우면서 했었는데 요새는 구글링 좀만 하면 코드를 다 구할 수 있다.

 

그만큼 python 언어를 다루는 사람이 많아지고 데이터 직무를 지망하는 사람들이 많아진 느낌...!

 

 

최근 대학원 강의를 듣는데 크롤링 강의를 분명히 듣지 못했는데 python으로 크롤링을 하라고 해서 구글로 찾아서 급하게 과제를 냈다.

 

낸 김에 코드를 공유한다.

 

 

#라이브러리 소환
from bs4 import BeautifulSoup as bs
import requests


firm_article = {"삼성전자": [], "청와대": [], "신한은행": [], "서울대학교": [], "구글": []} #검색하고 싶은 기관 이름
page_start = [1, 11, 21] #30개만 크롤링 하면 돼서 시작페이지 1, 11, 21 리스트로 지정함.. 더 많이 해야하면 for 문 써서 교정하시길
u = 0
for firm in list(firm_article.keys()):
  for page in page_start:
    url = "https://search.naver.com/search.naver?where=news&sm=tab_pge&query=%EC%82%BC%EC%84%B1%EC%A0%84%EC%9E%90&sort=0&photo=0&field=0&pd=0&ds=&de=&cluster_rank=109&mynews=0&office_type=0&office_section_code=0&news_office_checked=&nso=so:r,p:all,a:all&start={}".format(firm, page) 
    res = requests.get(url) 
    res.raise_for_status()
    soup = bs(res.text, "lxml") 
    soup_tit = soup.find_all("a", attrs={"class": "news_tit"})
    for tit in soup_tit:
      firm_article['{}'.format(firm)].append(tit.get_text())
      
      
import pickle
import pandas as pd

#완성된것 dataframe으로 만들어서 pickle로 저장
data = pd.DataFrame(firm_article)
data.to_pickle('기관제목.pkl')

 

 

코드가 특별난건 없는데 셀레니움 설치 안해도 되고 라이브러리도 별 필요없다.

구글 코랩에서 실행하면 바로 실행되니 실험해보시길

기관 이름 같은 경우는 바꾸면 되고, 여러 기관을 한번에 출력해야 해서 dict자료형을 이용했다.

 

더 나아가면 기사 날짜, 내용도 더 할 수 있지만 너무 귀찮기 때문에 여기까지....!

누군가에게 도움이 되기를 ~~

 

 

반응형