Python
์น ํฌ๋กค๋ง (2) BeautifulSoup ๋ผ์ด๋ธ๋ฌ๋ฆฌ
byeol_dev
2023. 5. 16. 09:00
๋ค์ด๋ฒ ๋ด์ค์ it/๊ณผํ ํญ์ ํค๋๋ผ์ธ ๊ธฐ์ฌ ์ ๋ชฉ ๋ค๊ณ ์ค๊ธฐ
๋ค์ด๋ฒ ๋ด์ค ์ ๋ชฉ ๊ฐ์ ธ์ค๊ธฐ
#ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฐ์ ธ์ด.
#์๋ ์ฝ๋๋ ๋งค๋ฒ ํ์
from bs4 import BeautifulSoup
from urllib.request import urlopen
#๋ฌธ์์ด๋ก ์ ๋ณด ๋ค๊ณ ์ค๊ธฐ
html = urlopen('https://news.naver.com/main/main.naver?mode=LSD&mid=shm&sid1=105')
# ๊ฐ์ ธ์จ ๋ฌธ์์ด ํํ์ html์ BeautifulSoup ๊ฐ์ฒด๋ก ๋ณํ
# bs = html์ด ๋ค์ด์๋ ๊ฐ์ฒด
bs = BeautifulSoup(html.read(), 'html.parser')
๋ชจ๋ ๊ธฐ์ฌ ์ ๋ชฉ์ ๋ค๊ณ ์ค๋ ค๋ฉด ์ด๋ค ํ๊ทธ๋ฅผ ์ ํํด์ผ ํ๋์ง ์ ์๊ฐํด๋ด์ผํจ.
๋ด์ค ๊ธฐ์ฌ ์ ์ฒด ์์ญ์ ๋ค ๊ฐ์ธ๊ณ ์๋ div๋ฅผ ๋ค๊ณ ์์ผํจ.
allDiv = bs.find_all('div', class_ = 'list_body section_index')
ํค๋๋ผ์ธ ๋ด์ค ์ ๋ณด๋ง ๊ฐ์ ธ์ค๊ธฐ
li ํ๊ทธ ํ๋ ํ๋๊ฐ ๋ด์ค 1๊ฐ์.
#ํค๋๋ผ์ธ ๋ด์ค ์ ๋ชฉ ๊ฐ์ ธ์ค๊ธฐ
headlineDiv = allDiv.find('div', class_ = '_persist')
headlineDiv
#li ํ๋๊ฐ ๋ด์ค ํ๋ํ๋์.
new_li_tags = headlineDiv.find('div').find('ul').find_all('li')
new_li_tags
li ํ๊ทธ๋ฅผ ์ ํํด๋ณด๋ฉด class๊ฐ sh_text์ธ div์ aํ๊ทธ ์์ ์ ๋ชฉ์ด ์์
์ ๋ชฉ๋ค ๋ฝ์์ ๋ฆฌ์คํธ์ ์ ์ฅ.
titleList = []
for li_tag in new_li_tags :
title = li_tag.find('div', class_="sh_text").find('a').get_text()
print(title)
titleList.append(title)
๋ด์ค ๋ชฉ๋ก์ด ์๋์ผ๋ก ๋ฐ๋๊ธฐ ๋๋ฌธ์ ๋ค์ด๋ฒ์ ๋ ์๋ ๊ธฐ์ฌ์ ์ถ์ถ ๊ฒฐ๊ณผ ์กฐ๊ธ ๋ค๋ฅผ ์ ์์.