개발자 커뮤니티인 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 파일이 생성됩니다.

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

200721.Hashcode 크롤러 업데이트