티스토리 뷰

네이버 뉴스 가져오기 : 추석 검색 후 뉴스 기사 제목 가져오기

from bs4 import BeautifulSoup
from selenium import webdriver

driver = webdriver.Chrome('chromedriver')

url = "가져올 페이지 url 입력"

driver.get(url)
req = driver.page_source
soup = BeautifulSoup(req, 'html.parser')

articles = soup.select_one("copy selector로 가져온 selector정보")

print(articles.text)

driver.quit()

  • 실행

뉴스 기사 여러개 가져오기

  • 각 뉴스들은 li태그 안에 있고 그 위에 ul 태그를 가져온다.

  • 기사 제목에 관한 정보는 가져온 ul > dl > dt > a 태그에 있다.

from bs4 import BeautifulSoup
from selenium import webdriver

driver = webdriver.Chrome('chromedriver')

url = "https://search.naver.com/search.naver?sm=top_hty&fbm=0&ie=utf8&query=%EC%B6%94%EC%84%9D"

driver.get(url)
req = driver.page_source
soup = BeautifulSoup(req, 'html.parser')

# ul태그 정보안의 각 기사 정보 가져오기
articles = soup.select("#main_pack > div.news.section._prs_nws_all > ul > li") 

# 각 기사의 제목 정보 가져오기
for article in articles:
    title = article.select_one('dl > dt > a')
    print(title.text) # 기사 제목

driver.quit()
  • 결과

 

뉴스의 url가져오기

  • 뉴스의 url은 a 태그 안에 href 속성에 있다.

from bs4 import BeautifulSoup
from selenium import webdriver

driver = webdriver.Chrome('chromedriver')

url = "https://search.naver.com/search.naver?sm=top_hty&fbm=0&ie=utf8&query=%EC%B6%94%EC%84%9D"

driver.get(url)
req = driver.page_source
soup = BeautifulSoup(req, 'html.parser')

# ul태그 정보안의 각 기사 정보 가져오기
articles = soup.select("#main_pack > div.news.section._prs_nws_all > ul > li") 

# 각 기사의 제목 정보 가져오기
for article in articles:
    title = article.select_one('dl > dt > a')
    url = article.select_one('dl > dt > a')['href'] # url
    print(title.text, url) # 기사 제목

driver.quit()
  • 결과

 

언론사 명 가져오기

from bs4 import BeautifulSoup
from selenium import webdriver

driver = webdriver.Chrome('chromedriver')

url = "https://search.naver.com/search.naver?sm=top_hty&fbm=0&ie=utf8&query=%EC%B6%94%EC%84%9D"

driver.get(url)
req = driver.page_source
soup = BeautifulSoup(req, 'html.parser')

# ul태그 정보안의 각 기사 정보 가져오기
articles = soup.select("#main_pack > div.news.section._prs_nws_all > ul > li") 

# 각 기사의 제목 정보 가져오기
for article in articles:
    title = article.select_one('dl > dt > a')
    url = article.select_one('dl > dt > a')['href'] # url
    comp = article.select_one('span._sp_each_source').text

    print(comp)

driver.quit()
  • 실행

  • 언론사 명만 가져오기
  • 공백으로 split -> 언론사는 공백으로 변환
comp = article.select_one('span._sp_each_source').text.split(' ')[0].replace('언론사', '')
  • 결과

엑셀로 저장하기

  • openpyxl 패키지 설치

  • 사용해보기
from openpyxl import Workbook

wb = Workbook()
ws1 = wb.active
ws1.title = "articles"
ws1.append(["제목", "링크", "신문사"])

wb.save(filename='articles.xlsx')
  • 실행

 

가져온 뉴스 데이터 엑셀에 저장하기

from openpyxl import Workbook
from bs4 import BeautifulSoup
from selenium import webdriver

driver = webdriver.Chrome('chromedriver')

url = "https://search.naver.com/search.naver?sm=top_hty&fbm=0&ie=utf8&query=%EC%B6%94%EC%84%9D"

driver.get(url)
req = driver.page_source
soup = BeautifulSoup(req, 'html.parser')

# ul태그 정보안의 각 기사 정보 가져오기
articles = soup.select("#main_pack > div.news.section._prs_nws_all > ul > li") 

wb = Workbook()
ws1 = wb.active
ws1.title = "articles"
ws1.append(["제목", "링크", "신문사"])

# 각 기사의 제목 정보 가져오기
for article in articles:
    title = article.select_one('dl > dt > a').text
    url = article.select_one('dl > dt > a')['href'] # url
    comp = article.select_one('span._sp_each_source').text.split(' ')[0].replace('언론사', '')
    ws1.append([title, url, comp])

wb.save(filename='articles.xlsx')

driver.quit()

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함