반응형


[개인용 프로그램 만들기]는 다른 사용자의 사용의 편의,

효율이나 확장성, 코드의 가독성을 고려하지 않는 즉 어떻게든 일단 돌아가는

나만을 위한 프로그램 만들기 과정을 정리합니다.





네이버 블로그에서 연재중인 웹 소설이 있는데 웹 브라우저로 봐도 좋지만
TTS기능이 달린 TXT리더기로 읽고 싶어서 블로그 내용을 다운받아서 읽기로 마음을 먹음

문제는 한화당 한 포스트에
여러 포스트를 일일이 다운받아야 한다는것
자동으로 여러 글을 다운받는것이 필요



먼저 크롬 개발자 도구로 본문의 엘리먼트를 확인



왠지 구조도 정형적이고 덜 복잡할것 같아서

모바일 페이지로 파싱


id viewTypeSelector를 확인



크롬을 사용해서 파싱을 해도 되지만

여러 페이지를 돌아다니면서 하나의 텍스트 파일로 저장하는게 번거로울것 같아서


이번에는 자바를 사용해서 다운받는 프로그램을 만들기로 함




Jquery Selector와 같게 간단한 문법으로 파싱이 가능한

Jsoup을 사용하기로 정함

https://jsoup.org/








Jsoup의 자체 함수로 제공되는 것을 이용하여 파싱할 페이지에 접속 후

id를 사용해서 엘리먼트를 가져오고 text()로 콘솔에 찍어봄


결과물이 안보이게 처리했지만

글은 잘 뽑혀 나왔는데

줄바꾸기가 사라져서 모든 내용이 한줄이 되어버림





물론 text가 아니라 html로 찍으면 더욱 난리




해법은 언제나 구글님과 스텍오버플로우님이 알려줌

https://stackoverflow.com/questions/5640334/how-do-i-preserve-line-breaks-when-using-jsoup-to-convert-html-to-plain-text







Jsoup.clean()을 사용하는 방법을 적용하였더니

줄바꿈이 잘 되었지만

 들이 남아있음





깔끔하게 텍스트만 뽑혀서 나옴!







본문은 추출하는건 완성했고

이제 같은 카테고리에 있는 

다음글의 주소를 알아야 하는데




화면 한쪽에 글들이 나오고 위에서 2번째 것이 다음글이 계속 오는것 같아

저 내용을 사용하기로



_relatedCategoryPostList를 찍어보았지만 아무 내용도 안나옴...




전체 html을 확인해보았더니 같은 클래스내에 다른 글 내용이 빠져있음

아마 디바이스에 따라 화면에 맞는 내용이 나오도록 되어있는것 같은데

UserAgent를 변조해서 나오면 좋지만 동적JS로 화면 사이즈 구해서 내용을 넣으면 Jsoup로 하기에 난감해보임












연관글 보기는 포기하고 블로그 내에

카테고리내의 여러글 보기를 확인해 봄




30줄 보기를 선택했을 때 호출하는 내용을 확인




Json으로 포스트들이 쭉 나옴

아쉽게도 countPerPage를 늘려봐도 30개까지만 정상적으로 응답해줌




다운받으려고 한 내용은 많지 않으므로

30개씩 수동으로 데이터를 받아옴




Json을 csv로 바꾸고...

https://konklone.io/json/







엑셀에 옮기고 역순으로 바꾸어줌

(오래된 포스팅을 먼저 파싱하도록)



PrintWriter를 사용해서 txt파일로 저장!




원하는 형태의 텍스트 파일이 무사히 생성



반응형
반응형

[개인용 프로그램 만들기]는 다른 사용자의 사용의 편의,

효율이나 확장성, 코드의 가독성을 고려하지 않는 즉 어떻게든 일단 돌아가는

나만을 위한 프로그램 만들기 과정을 정리합니다.






스마트폰 디카 등 파일명에 날짜가 없고 그냥 숫자여서 정리가 안됨

탐색기에서 날짜로 정렬도 가능하지만 뷰어에서 보기 좋게 파일명에 날짜를 적어서 정렬하기로 함




간단하고 빨리 만들기 위해 파이썬을 선택



일단 os으로 폴더내 파일 리스트를 받아옴








endswith으로 원하는 확장자를 판단







샘플로 사용한 파일이 JPG가 대문자로 되어있어서

검출을 못했기에 lower()를 추가









파일의 시간을 가져옴









날짜를 원하는 포맷으로 바꾸기 위해 일단 파싱








년월일_시분초로 형태 변환








파일명이 중복될 문제도 있고 

잘못될 경우 롤백을 위해서 기존 파일명은 남겨놓고 파일명 앞에 날짜를 적음










os.rename()으로 파일명 변경









python이 설치된 윈도우즈OS여서 그냥 파이썬 파일을 더블클릭해서 실행











바로 파일명을 원하는 형태로 바꾸어 주었습니다.




반응형

+ Recent posts