import requests
from bs4 import BeautifulSoup
import openpyxl # 파이썬에서 엑셀을 다룰 수 있는 패키지
url = "https://www.~/"
qp = "Query Parameter 부분 curPage="
postNum = [] # 주소 사이에 있는 포스트 번호를 담는 배열
count = 1 # 글 개수
wb = openpyxl.Workbook()
2) Sheet 활성
sheet = wb.active
3) 데이터프레임 내 header(변수명) 생성
sheet.append(["글번호", "제목", "날짜", "담당부서", "담당자", "연락처", "내용"])
for page in reversed(range(1, 68)) :
1페이지부터 67페이지까지 역순으로 for문 돌아감
(역순으로 한 이유 : 제일 끝(67페이지)에 있는 글이 제일 처음 올라온 글이라서 엑셀 파일 상에서는 제일 첫 글이 맨 위로 올라와야 한다)
hrefs = [ div.find('a')['href'] for div in linkItems # <a href="">
for i in reversed(hrefs) :
postNum.append(i[9:15])
a 태그의 href 주소를 hrefs 배열에 리스트 형태로 넣는다
그 다음 hrefs 배열에 대한 반복문을 돌려준다
그리고 9번째부터 14번째의 문자를 각 주소에서 추출해 빈 배열인 postNum에 추가해준다.
for page in reversed(range(1, 68)) :
req = requests.get(url + qp + "{}".format(page))
bsObject = BeautifulSoup(req.content, 'html.parser')
linkItems = bsObject.find_all('div', {'class':'subject'})
hrefs = [ div.find('a')['href'] for div in linkItems
postNum = []
for i in reversed(hrefs) :
postNum.append(i[9:15])
for num in postNum :
req = requests.get(url + num + qp + "{}".format(page))
bsObject = BeautifulSoup(req.content, 'html.parser')
subject = bsObject.find('div', {'class':'subject'}).text
day = bsObject.find('div, {'class':'day'}).select_one('span').string
department = bsObject.find('div', {'class':'info'}).select_one('span:nth-child(1)').text[4:]
person = bsObject.find('div', {'class':'info'}).select_one('span:nth-child(2)').text[3:]
phone = bsObject.find('div', {'class':'info'}).select_one('span:nth-child(3)').text[3:]
content = bsObject.find('div', {'class':'cont'}).text
sheet.append([count, subject, day, department, person, phone, content])
count += 1
wb.save("data.xlsx")