반응형
작성된 코드는 파이썬을 이용하여 뉴스 기사를 스크래핑 코드 예시입니다.
필요한 패키지
- requests
- BeautifulSoup
코드
# 웹사이트 스크래핑
import requests
from bs4 import BeautifulSoup
"""
Response code 403 에러 시 User Agent 접근 거부일 수 있음
접근 URL의 UA 정보 확인 후 임의변경
User Agent 임의 변경 후 접근 방법
headers = {"User-Agent": "[WhatIsMyBrowser에 나타난 나의 유저 정보]"}
res = requests.get(url, headers=headers)
"""
# 웹서버 리스트
c_url = [
{"name": "보안뉴스", "url": "http://www.boannews.com/media/t_list.asp"},
{
"name": "네이버 IT보안",
"url": "https://news.naver.com/main/list.naver?mode=LS2D&mid=shm&sid1=105&sid2=732",
},
]
header = {"user-agent": "Mozilla/5.0"}
class Connect:
def __init__(self, url):
self.url = url
def conn(self):
res = requests.get(self.url, headers=header, verify=False)
if res.status_code == 200:
print("200, 웹 접근 성공 \n")
soup = BeautifulSoup(res.text, "lxml")
return soup
else:
print("접근 실패")
class BoanNews(Connect):
def __init__(self, url):
super().__init__(url)
soup = self.conn()
print("\t *** 보안뉴스 Security 최신 기사 *** \n")
n_list = soup.find_all("div", attrs={"class": "news_list"}) # 뉴스 한페이지
for news in n_list:
newsTitle = news.find("span", attrs={"class": "news_txt"}) # 뉴스 제목
newsLink = news.find("a")["href"] # 뉴스 링크
newsDate = news.find("span", attrs={"class": "news_writer"}) # 뉴스 기자, 날짜
news_title = newsTitle.text
news_link = "http://www.boannews.com" + newsLink
news_writer = newsDate.text
print(news_title)
print(news_link)
print(news_writer, "\n")
class NaverNews(Connect):
def __init__(self, url):
super().__init__(url)
soup = self.conn()
print("\t *** 네이버 IT보안 최신 기사 *** \n")
naver_page = soup.find("div", attrs={"class": "list_body newsflash_body"})
naver_list = naver_page.find_all("li") # 뉴스 리스트
for news in naver_list:
naver_title = news.text # 뉴스 제목
naver_link = news.find("a")["href"] # 뉴스 링크
naver_writer = news.find(
"span", attrs={"class": "date is_outdated"}
) # 뉴스 작성시간
print(naver_title)
print(naver_link)
print(naver_writer, "\n")
for p in c_url:
name = p["name"]
url = p["url"]
if "네이버" in name:
naver = NaverNews(url)
elif "보안뉴스" in name:
boan = BoanNews(url)
사용 방법
- 필요한 패키지를 설치합니다.
- 스크래핑하고자 하는 뉴스 기사의 URL을 url 변수에 입력합니다.
- 뉴스 제목과 내용의 클래스명을 news_title과 news_content 변수에 입력합니다.
- 코드를 실행합니다.
주의사항
- 뉴스 사이트의 구조에 따라 클래스명, 태그 등이 다를 수 있으니, HTML 구조를 파악하고 사이트에 맞게 수정하여 사용해야 합니다.
- 뉴스 사이트의 스크래핑 접근에 대한 문제가 있을 수 있으니 주의해야 합니다.
반응형
'프로그래밍_기타 언어' 카테고리의 다른 글
파이썬(python) 파일 읽고 쓰기 (0) | 2024.09.22 |
---|---|
파이썬(python) 예외처리(try except) (0) | 2024.09.22 |
jquery 에서 사용하는 속성 메서드 정리 (1) | 2024.09.22 |
jquery 메서드 종류 및 기본 설명 (5) | 2024.09.22 |
jquery 노드 메서드 정리 (0) | 2024.09.22 |