728x90
반응형
네이버 뉴스의 헤드라인 뉴스 목록을 크롤링하기 위해서는 웹페이지의 HTML 구조를 분석하고, 필요한 정보를 추출하는 작업이 필요합니다.
주로 Requests와 BeautifulSoup을 사용하여 이 작업을 수행합니다.
아래는 네이버 뉴스의 헤드라인 뉴스 목록을 크롤링하는 예시 코드입니다.
import requests
from bs4 import BeautifulSoup
def get_naver_news_headlines():
url = 'https://news.naver.com/section/105' #IT/과학의 헤드라인 뉴스입니다.
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
} # User-Agent 헤더를 추가하여 웹 페이지 요청을 보냅니다.
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
headlines = []
# 헤드라인 뉴스를 포함하는 태그들을 찾습니다.
for element in soup.select('.sa_text_strong'):
print(element.text)
return headlines
# 헤드라인 뉴스 목록을 가져와 출력합니다.
headlines = get_naver_news_headlines()
태그 찾기: BeautifulSoup 객체에서 find() 또는 find_all() 메서드를 사용하여 원하는 태그를 찾습니다.
- find(): 조건에 맞는 첫 번째 태그를 반환합니다.
tag = soup.find('태그명')
- find_all(): 조건에 맞는 모든 태그를 리스트로 반환합니다.
tags = soup.find_all('태그명')
조건 지정: 태그를 찾을 때는 보통 태그 이름뿐만 아니라 클래스, id 등의 다양한 조건을 사용합니다.
- 태그 이름: 해당 태그의 이름을 사용하여 찾습니다
soup.find_all('div') # 모든 <div> 태그 찾기
- 클래스: class 속성을 사용하여 찾습니다
soup.find_all(class_='class_name') # class가 'class_name'인 모든 태그 찾기
- id: id 속성을 사용하여 찾습니다
soup.find_all(id='element_id') # id가 'element_id'인 모든 태그 찾기
추가적인 조건 지정: 위의 예시에서는 단순한 태그 이름, 클래스, id를 사용하여 태그를 찾았지만, 더 복잡한 조건도 사용할 수 있습니다. 예를 들어, 속성의 값이 특정한 패턴을 따르는 태그를 찾을 수도 있습니다.
soup.find_all('a', href=True) # href 속성을 갖고 있는 모든 <a> 태그 찾기
soup.select() 메서드는 BeautifulSoup에서 CSS 선택자를 사용하여 요소를 선택하는 기능을 제공합니다. CSS 선택자를 사용하면 더 유연하고 정확하게 원하는 요소를 선택할 수 있습니다.
select() 메서드는 선택자에 해당하는 모든 요소를 리스트로 반환합니다. 예를 들어, 모든 <a> 태그를 선택하려면 soup.select('a')를 사용할 수 있습니다.
soup.select('a') # 모든 <a> 태그 선택
soup.select('.class_name') # class가 'class_name'인 요소 선택
soup.select('div a') # <div> 요소 아래의 모든 <a> 태그 선택
soup.select('[href]') # href 속성을 갖는 모든 요소 선택
soup.select('[href="https://naver.com"]') # href 속성 값이 'https://naver.com'인 모든 요소 선택
728x90
반응형
'프로그래밍 > python' 카테고리의 다른 글
파이썬 GUI 프로그램 만들기 PyQt5 설치 (0) | 2024.04.29 |
---|---|
특정 사이트에서 이미지 추출 후 저장하기 (0) | 2024.04.24 |
파이썬 오류 ModuleNotFoundError No module named 'html.entities'; 'html' is not a package (0) | 2024.04.23 |
파이썬에서 MySQL 데이터베이스 다루기: Insert, Update, Delete (0) | 2024.04.19 |
Python에서 MySQL 데이터베이스 연동하기 (0) | 2024.04.18 |