DevSSOM
파이썬 크롤링 - 간단한 실습 : 네이버 뉴스 헤드라인 추출 본문
반응형
연합뉴스 속보 기사 제목 추출하기
네이버 뉴스 연합뉴스 속보 페이지의 기사 제목을 출력해보기.
https://news.naver.com/main/list.nhn?mode=LPOD&mid=sec&sid1=001&sid2=140&oid=001&isYeonhapFlash=Y
출력예시
[기사제목1, 기사제목2, 기사제목3, ———]
해야할 것
- crawling 함수는 네이버 뉴스 페이지의 연합뉴스 기사들을 찾고, 그것들의 제목을 담고 있는 리스트를 반환해야 함.
- 주어진 코드는 main 함수와 crawling 함수가 있습니다. main 함수에서는 crawling 함수의 결과값을 출력.
- main 함수를 직접 수정하실 필요는 없음.
- crawling 함수를 올바르게 구현해봐.
import requests
from bs4 import BeautifulSoup
def crawling(soup) :
# soup 객체에서 추출해야 하는 정보를 찾고 반환
return None
def main() :
custom_header = {
'referer' : 'https://www.naver.com/',
'user-agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'
}
url = "https://news.naver.com/main/list.nhn?mode=LPOD&mid=sec&sid1=001&sid2=140&oid=001&isYeonhapFlash=Y"
req = requests.get(url, headers = custom_header)
soup = BeautifulSoup(req.text, "html.parser")
# crawling 함수의 결과를 출력
print(crawling(soup))
if __name__ == "__main__" :
main()
>>>
해당 페이지에서 구글 검사를 해보면 개발자 도구에 HTML들이 표시됨. 기사 제목들을 포함하고 있는 HTML은 <div class="list_body newsflash_body"> 그래서 이 class를 가지고 find 메소드를 적용하면
def crawling(soup) :
# soup 객체에서 추출해야 하는 정보를 찾고 반환
div = soup.find("div", "list_body") # div 함수를 찾돼, list_body를 찾아
print(div)
return None
근데 실행 결과를 보면 아직은 좀 복잡해. 그래서 각각의 기사 제목이 들어있는 a 태그들을 찾는 걸 한번 더 해볼게.
def crawling(soup) :
# soup 객체에서 추출해야 하는 정보를 찾고 반환하세요.
div = soup.find("div", "list_body") # div 함수를 찾돼, list_body를 찾아
for a in div.find_all("a") :
print(a)
return None
이 상태에서 텍스트만 추출하기 위해 .get_text() 적용.
def crawling(soup) :
# soup 객체에서 추출해야 하는 정보를 찾고 반환하세요.
div = soup.find("div", "list_body")
for a in div.find_all("a"):
print(a.get_text())
return None
이제 결과들을 리스트에 넣어주기 위해서 result라는 리스트를 만들고, append로 결과값을 넣어줘.
def crawling(soup) :
# soup 객체에서 추출해야 하는 정보를 찾고 반환하세요.
result = []
div = soup.find("div", "list_body")
for a in div.find_all("a"):
result.append(a.get_text())
return result
그럼 끝!
최종 코드
import requests
from bs4 import BeautifulSoup
def crawling(soup) :
# soup 객체에서 추출해야 하는 정보를 찾고 반환
result = []
div = soup.find("div", "list_body")
for a in div.find_all("a"):
result.append(a.get_text())
return result
def main() :
custom_header = {
'referer' : 'https://www.naver.com/',
'user-agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'
}
url = "https://news.naver.com/main/list.nhn?mode=LPOD&mid=sec&sid1=001&sid2=140&oid=001&isYeonhapFlash=Y"
req = requests.get(url, headers = custom_header)
soup = BeautifulSoup(req.text, "html.parser")
# crawling 함수의 결과를 출력
print(crawling(soup))
if __name__ == "__main__" :
main()
728x90
반응형
'Python > 크롤링' 카테고리의 다른 글
파이썬 크롤링 - HTML 태그 속성 (0) | 2021.06.27 |
---|---|
파이썬 크롤링 - 쿼리 개념 (0) | 2021.06.26 |
파이썬 크롤링 - 간단한 실습 : 네이트 판 댓글 수집 (1) | 2021.06.25 |
파이썬 크롤링 - 간단한 실습 : 영화 리뷰 수집 (0) | 2021.06.24 |
파이썬 크롤링 - 간단한 실습 : 벅스뮤직 음원차트 추출 (0) | 2021.06.23 |
파이썬 크롤링 - 간단한 실습 : 네이버 헤드 뉴스 찾기 (0) | 2021.06.21 |
파이썬 크롤링 - BeautifulSoup 기본 개념 (0) | 2021.06.21 |
댓글