웹사이트에서 개발자모드(F12)를 진입하여 소스(Element)를 확인하자

위 화면에서 우리가 필요한 정보는 "번호, 제목, CVSS, 게시일"이다.
소스코드를 한번 확인해보자

위 소스코드에서 보면 table 태그안에 thead, tbody 가 있고, 우리가 필요한 정보는 tbody 안의 tr에 있는 것을 확인했다.


여기까지 이해했다면 바로 코드를 짜보자
import requests
req = requests.get('https://www.krcert.or.kr/kr/bbs/list.do?bbsId=B0000302&menuNo=205023')


import requests
from bs4 import BeautifulSoup
req = requests.get('https://www.krcert.or.kr/kr/bbs/list.do?bbsId=B0000302&menuNo=205023')
scrap = BeautifulSoup(req.content, 'html.parser')

table = scrap.find('table')

만약 해당 소스에 table이 여러개고 위 이미지와 같은 정보가 2번째의 table이라면 find_all을 이용하여 찾은 다음 인덱스를 이용하여 찾아야한다.
table = scrap.find_all('table')
print(table[1])
tbody = table.find('tbody')

table = scrap.find('table').find('tbody')
find

find_all

find는 tr의 첫번째 내용만 보이고, find_all은 모든 tr을 list 형태로 보여준다
tds = trs.find_all('td')

이제 list의 특정 내용만 보고 싶으면 index를 사용하여 필요한 부분을 추출하자

"번호"
num = tds[0]

num = tds[0].text
title = tds[1].text
severity = tds[2].text
cvss = tds[3].text

vuln_dic = {'num':num, 'title':title, 'severity':severity, 'cvss': cvss}

import requests
from bs4 import BeautifulSoup
req = requests.get('https://www.krcert.or.kr/kr/bbs/list.do?bbsId=B0000302&menuNo=205023')
scrap = BeautifulSoup(req.content, 'html.parser')
table = scrap.find('table')
tbody = table.find('tbody')
trs = tbody.find('tr')
tds = trs.find_all('td')
num = tds[0].text
title = tds[1].text
severity = tds[2].text
cvss = tds[3].text
vuln_dic = {'num':num, 'title':title, 'severity':severity, 'cvss':cvss}
print(vuln_dic)
