개발자 커뮤니티인 hashcode.co.kr 의 질문글들을 크롤링하여 csv 파일 형태로 저장하는 소스코드 입니다.
크롤링 툴로는 BeautifulSoup와 pandas를 사용했습니다.
hashcode.co.kr 의 모든 글의 제목, 본문, 답변, 태그를 추출하였습니다.
import requests
import pandas as pd
from bs4 import BeautifulSoup
# url 뒤에 붙을 숫자 범위
ran = range(1, 11057)
url = "<https://hashcode.co.kr/questions/>"
# url 뒤에 지정한 범위 내의 숫자를 붙여 배열에 저장
url_list = []
for r in ran:
url_list.append(url + str(r))
data_list = []
for url in url_list:
# 진행 상황 파악하기 위해 링크 출력
print(url)
# 파싱 작업
req = requests.get(url)
html = req.text
soup = BeautifulSoup(html, 'html.parser')
#제목 추출
title = soup.select('body > div.main > div.content > div.content-wrap > div.center > h2 > a')
#본문 추출
contents = soup.select(
'body > div.main > div.content > div.content-wrap > div.center > div.content.question-body > div.markdown')
#답변 추출
answers = soup.select(
'div.answer-wrap > ul.answers-list > li > div.center > div.markdown')
# 배열 형태인 답변들을 text 형으로 전환
list=[]
for answer in answers:
list.append(answer.text)
#답변들을 구분해줄 문자열(<------->)을 사이에 추가한다.
answer_str="\\n\\n<-------------------------------->\\n\\n".join(list)
# 태그 추출
tag = soup.select(
'body > div.main > div.content > div.content-wrap > div.center > div.question-tags')
# 추출한 데이터 삽입
for item in zip(title, contents, answer_str, tag):
data_list.append(
{
'제목': item[0].text,
'내용': item[1].text,
'답변': answer_str,
'태그': item[3].text.replace('\\n', '').replace('\\t', '').replace(' ', '')
}
)
# 추출한 데이터 csv파일 형태로 저장
data = pd.DataFrame(data_list)
data.to_csv('crawling_hashcode.csv')
이렇게 크롤링을 돌리고 나면 해당프로젝트 폴더 안에 crawling_hashcode.csv 파일이 생성됩니다.

위는 저장된 데이터 예시입니다.