GoSo Helper with python

개요

어쩌다보니 디시인사이드의 게시글들 중 특정 키워드를 가진 게시글을 가져와서 PDF로 만드는 자동화 작업을 한 적이 있었다. 그렇다. 고소를 위한 증거 수집이다. 이번 게시글은 그때 만들었던 코드를 일부 수정한 버전이다.

GoSo Helper?

사이트의 특성상 게시글이 너무 많다. 하지만 게시판 별로 태그가 충실히 나뉘어 있으며, 글번호도 게시판마다 다르다. 그래서 크롤링 자체는 쉽다… 라고 말하려고 했는데, 공개를 위해 테스트를 해보니 작동하지 않았다…

대충 이유를 찾아보니, 크롤러 방지용으로 User-Agent를 검사하는 기능이 추가된 것 같았다. 그래서 겸사겸사 수정하면서 개선버전을 만들었다.

개선된 GoSo Helper는 기존의 PDF 인쇄를 특정 외부 사이트에서 받아오는 형식으로 만드는 대신, pdfkit을 이용하여 자체적으로 출력하도록 개발하였다. 또한, 멀티프로세싱 관련 코드도 조금 더 개선하였다.

그래도 오래 걸린다. 이전의 기억을 되돌려보면… 10만건 확인하는데 3시간이었나…? 아무튼 오래 걸린다. 물리적으로 어쩔 수 없다. 이 이상으로 빠르면 서버에서 접속을 끊었던걸로 기억한다

변경점?

기존의 Goso Helper는 python의 pool을 이용하였다. 오래전 일이라 기억이 잘 안나긴 하지만, 당시 속도 문제와 신뢰성 문제가 존재했다. 그래서 Process로 변경하였다.

변경하면서 대충 나혼자 쓰려고 만들었던 코드들도 개선을 조금 했는데… 귀찮기도 하고 시간이 너무 많이 드는 것 같아 적당히 고쳤다. 그래서 코드가 좀 엉망이다. 그래도 잘 돌아가니까…? 괜찮은가?

기능

match_str에 리스트 형태로 키워드를 넣고, 시작 글번호와 끝 글번호를 넣어주면, 그 범위 내에서 게시글을 찾는다. 키워드를 가지고 있는 게시글의 경우에는 web archive 사이트로 보내고, PDF화 한다.

두가지를 동시에 하는 이유는 어차피 고소하려면 PDF로 뽑아서 가야하고, Web archive 사이트로 보내서 백업본을 만드려는 이유다.

사용법

https://github.com/y2sman/goso_helper

개선 버전은 정확히 확인을 못했다. 이전 버전으로는 게시글 10만건 까지 돌려봤었다. 하지만 이번 개선버전은 시간 부족으로 100개정도 까지만 확인했기 때문에, 너무 많으면 중간에 꺼질 수도 있다.

# Dev, Python

댓글

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×