다른 프로젝트에서 import해서 사용하려면 패키지로 설치하세요:
cd dcinside-python3-api
pip install -e .또는 일반 설치:
cd dcinside-python3-api
pip install .설치 후 어디서든 사용 가능:
import dcapi
from dcapi.read.title_selenium import main as selenium_title프로젝트 폴더에 직접 포함해서 사용:
import sys
sys.path.insert(0, '/path/to/dcinside-python3-api')
import dcapi다음 패키지들이 필요합니다 (설치 시 자동으로 설치됨):
- requests
- beautifulsoup4
- lxml
- selenium
갤러리의 글 목록을 가져옵니다. 제목과 글 번호를 함께 반환합니다.
# 1페이지 글 목록 가져오기
data = dcapi.read.title("dcbest", 1, 1)
print(data)
# -> {1: [{'title': '첫번째글제목', 'post_num': '1234567'}, {'title': '두번째글제목', 'post_num': '1234568'}, ...]}
# 여러 페이지 가져오기 (1페이지부터 3페이지까지)
data = dcapi.read.title("dcbest", 1, 3)
print(data)
# -> {1: [...], 2: [...], 3: [...]}
# 첫 페이지 첫 번째 글의 정보
first_post = data[1][0]
print(first_post['title']) # 제목
print(first_post['post_num']) # 글 번호반환 형식:
{페이지번호: [{'title': '제목', 'post_num': '글번호'}, ...]}
주의: 디시인사이드의 봇 차단으로 인해 일반 버전은 차단될 수 있습니다. Selenium 버전을 사용하는 것을 권장합니다.
Selenium을 사용하여 봇 차단을 우회하는 버전입니다.
from dcapi.read.title_selenium import main as selenium_title
# 글 목록 가져오기
posts = selenium_title("dcbest", 1, 3, headless=True)
# headless=True: 브라우저 창을 띄우지 않음
# headless=False: 브라우저 창을 띄움 (디버깅용)
# 반환 형식은 일반 버전과 동일
first_post = posts[1][0]
print(first_post['title'])
print(first_post['post_num'])필요한 것:
- Selenium 설치:
pip install selenium - ChromeDriver (자동으로 다운로드되거나 수동 설치 필요)
게시글의 고유번호를 이용해 게시글의 상세 정보를 가져옵니다.
data = dcapi.read.post("dcbest", "1234567")
print(data)
# -> {
# 'post_num': '1234567',
# 'title': '제목입니다',
# 'writer': '닉네임',
# 'time': '2021-11-06 10:00:01',
# 'ip': '(125.244)',
# 'view_num': '37559',
# 'comment_num': '119',
# 'up': '266',
# 'down': '31',
# 'gonic_up': '88',
# 'content': '내용입니다',
# 'images': ['https://...', 'https://...'] # 이미지 URL 목록
# }
# 원하는 정보만 사용
print(data['title']) # 제목
print(data['content']) # 내용
print(data['images']) # 이미지 URL 목록반환 데이터:
post_num: 글 번호title: 제목writer: 작성자time: 작성시간ip: IP 주소view_num: 조회수comment_num: 댓글수up: 추천수down: 비추천수gonic_up: 고닉 추천수content: 글 내용images: 이미지 URL 목록 (자동 추출)
해당 글의 댓글들을 가져옵니다.
data = dcapi.read.reply("dcbest", "1234567")
print(data)
# -> {
# 0: ['작성자(IP)', '댓글 내용'],
# 1: ['작성자(IP)', '댓글 내용'],
# ...
# }
# 첫 번째 댓글
print(data[0]) # ['작성자', '내용']
print(data[0][0]) # 작성자
print(data[0][1]) # 댓글 내용dcbest 갤러리에서 글을 가져와서 파일로 저장하는 스크립트입니다.
python save_dcbest_posts.py기능:
- 글 목록 가져오기 (Selenium 사용)
- 각 글의 상세 정보 수집
- 썸네일 이미지 다운로드 (각 글당 1개)
- JSON, 텍스트, CSV 파일로 저장
저장되는 파일:
dcbest_posts_날짜시간.json: 구조화된 데이터dcbest_posts_날짜시간.txt: 읽기 쉬운 텍스트 형식dcbest_posts_날짜시간.csv: 엑셀에서 열 수 있는 형식dcbest_thumbnails_날짜시간/: 썸네일 이미지 폴더
import dcapi
from dcapi.read.title_selenium import main as selenium_title
# 1. 글 목록 가져오기 (Selenium 사용 권장)
posts = selenium_title("dcbest", 1, 1, headless=True)
# 2. 첫 번째 글의 상세 정보
if posts and 1 in posts and posts[1]:
first_post = posts[1][0]
post_num = first_post['post_num']
# 3. 상세 정보 가져오기
detail = dcapi.read.post("dcbest", post_num)
print(f"제목: {detail['title']}")
print(f"내용: {detail['content']}")
print(f"이미지: {len(detail['images'])}개")
# 4. 댓글 가져오기
replies = dcapi.read.reply("dcbest", post_num)
print(f"댓글: {len(replies)}개")- 봇 차단: 디시인사이드가 봇 요청을 차단할 수 있습니다. Selenium 버전을 사용하는 것을 권장합니다.
- 요청 간격: 너무 빠른 요청은 차단될 수 있으므로 적절한 간격을 두세요.
- 이미지 다운로드: 이미지 다운로드 시 Referer 헤더가 필요할 수 있습니다.
비공식 API입니다. 사용 시 주의하세요.