1. BeautifulSoup ์ค์น
- ์ฌ๊ธฐ์ BeautifulSoup์ ๋ฌด์์ธ๊ฐ? ์์ ์พ...? HTML ๋ฐ XML ํ์ผ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ ์ค๊ธฐ์ํ Python ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค ์ด์์ '์ด์ํ ๋๋ผ์ ์จ๋ฆฌ์ค'์์ ์ ๋๋์๋ค๊ณ ํ๊ณ ์๋ฆ๋ต๊ฒ ์ ๋ ฌํด์ค๋ค๋ ์ ๋์ ์๋ฏธ?!
pip3 install bs4
2. ํน์ URL์ HTML ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ(=ํฌ๋กค๋ง)
- ์ ๋ธ๋ก๊ทธ์ Network Category์ HTML ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ Title ์ ๋ชฉ์ ๋ฆฌ์คํธ์ ํด๋ณด๊ฒ ์ต๋๋ค!
context = ssl._create_unverified_context() # SSL ์ธ์ฆ์ด ์์๋ก ๊ฑฐ์ณ๊ฐ context ํ์
html = urlopen("https://eunhyee.tistory.com/category/Network", context=context)
BS_html = BeautifulSoup(html, "html.parser")
3. ํน์ ํญ๋ชฉ ๋ถ๋ฌ์ค๊ธฐ(select)
- ํฌ๋กฌ ๊ฐ๋ฐ์๋๊ตฌ์ jsoup ์ฌ์ดํธ๋ฅผ ํตํ์ฌ ํ์ํ ๋ฐ์ดํฐ ์ถ์ถ
- div class : article-content์ a href๊ฐ ๊ฐ Title์ URL์ด๊ธฐ ๋๋ฌธ์ ์๋ ์กฐ๊ฑด์ผ๋ก ์ถ์ถํ์ฌ list๋ก ๋ง๋ฆ(๊ตณ์ด Title URL ์ถ์ถํ์ง ์๊ณ ํด๋น URL์์๋ ํ์ํ ์ ๋ณด๋ฅผ ์ป์ ์ ์์ง๋ง ๊ฐ Title URL์ ๋ ๋ง์ ์ ๋ณด๊ฐ ์๊ธฐ ๋๋ฌธ์ ํ๋ฒ ๋ค์ด๊ฐ๋ณด๊ฒ ์ต๋๋ท)
for title in BS_html.find_all('div', {'class':'article-content'}):
url = title.select('a')[0].get('href')
url_list.append('https://eunhyee.tistory.com' + url)
4. ํน์ ํญ๋ชฉ ๋ถ๋ฌ์ค๊ธฐ(find)
- ์ฐ์ ์ ํ๋๋ง ๋ถ๋ฌ์๋ด ์๋ค h2 tag๋ Title URL์ ์ ๋ชฉ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ h2 tag๋ฅผ ์ฐพ๊ณ get_text().strip()์ ํตํ์ฌ Title ์ ๋ณด๋ง ๋ฐ์์ค๊ฒ ์ต๋๋ท (get_text().strip()๋ฅผ ์ฌ์ฉํ์ง ์์ ๊ฒฝ์ฐ์๋ 1 <h2 class="title-article">Cisco Systems CCNA(Cisco Certified Network Associate) ์๊ฒฉ์ฆ ์ทจ๋</h2> ์๋ฐ ์์ผ๋ก ์ถ์ถ๋ฉ๋๋ค)
- ์ ๋ ์ ๋ชฉ๋ง ๋ถ๋ฌ์์ง๋ง ์ฝ๋๋ฅผ ์ถ๊ฐํ์ฌ ๋ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ ์๋ ์์ต๋๋ค!
for index, title_url in enumerate(url_list):
html = urlopen(title_url, context=context)
BS_html = BeautifulSoup(html, "html.parser")
title = BS_html.find('h2')
title = title.get_text().strip()
print(index+1, title)
5. ๊ฒฐ๊ณผ
- ๐ ์ฑ๊ณต! ๐
from urllib.request import urlopen
from bs4 import BeautifulSoup
import ssl
context = ssl._create_unverified_context()
html = urlopen("https://eunhyee.tistory.com/category/Network", context=context)
BS_html = BeautifulSoup(html, "html.parser")
url_list = []
for title in BS_html.find_all('div', {'class':'article-content'}):
url = title.select('a')[0].get('href')
url_list.append('https://eunhyee.tistory.com' + url)
for index, title_url in enumerate(url_list):
html = urlopen(title_url, context=context)
BS_html = BeautifulSoup(html, "html.parser")
title = BS_html.find('h2')
title = title.get_text().strip()
print(index+1, title)
1 Cisco Systems CCNA(Cisco Certified Network Associate) ์๊ฒฉ์ฆ ์ทจ๋
2 IPv6
3 Config ์๋ํ ํด(puppet, chef, salt, ansible)
4 EVE NG ์ค์ต ํ๊ฒฝ ๊ตฌ์ถ
5 OSI ์ฐธ์กฐ ๋ชจ๋ธ(OSI 7 Layer)๊ณผ TCP/IP
6 PSTN, PSDN
7 ์ ๋ณดํต์ ๋ง ๊ฐ์
8 ์ ์ก๋งค์ฒด
9 ํต์ ์ ๊ธฐ์ด
10 ์๋ ๋ก๊ทธ/๋์งํธ ์ ํธ
11 ์ ๋ณดํต์ ์กฐ์ง
12 NFV
13 SDN
14 TCP์ UDP
15 DNS
16 Security
17 ARP Spoofing
'Programming > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฌธ์์ด ๋ค๋ฃจ๊ธฐ (0) | 2021.08.09 |
---|---|
selenium ํตํด์ web crawling ํด์ slack ๋ฉ์ธ์ง ๋ณด๋ด๊ธฐ (0) | 2021.06.22 |
ํ์ผ ๊ฒฝ๋ก ์ด๋(copy, move)ํ๊ณ ์ญ์ (rm)ํ๊ณ ์์ถ(zip)ํ๊ธฐ (0) | 2021.06.22 |
ํ์ผ ์ด๊ณ (open) ์ฝ๊ณ (read) ์ฐ๊ธฐ(wirte) (0) | 2021.06.17 |
OS ๋ชจ๋ (0) | 2021.06.16 |