DevTip#3: 메모를 Joplin으로 가져오기 위해 HTML을 제거하고 마크다운으로 변환
▶ 배경 ↑top
이 문서에서 Joplin으로 메모를 가져오는 방법에 대해 구체적으로 언급했지만 제시된 단계는 일반적입니다. 이 문서를 최대한 간결하게 유지하기 위해 메모 내보내기 및 가져오기에 대한 대부분의 세부 정보가 생략되었습니다. HTML을 정리하고 Markdown으로 변환하는 단계를 찾고 있다면 바로 Solution 으로 건너뛰십시오.
나는 OneNote, Evernote, Leanote을 노트 필기 소프트웨어로 사용하고 있었습니다. OneNote는 주로 개인 메모에 사용되는 반면 Evernote는 업무에 사용됩니다. 나중에 Evernote에서 자체 호스팅 Leanote로 전환하여 지난 2~3년 동안 사용했습니다.
이제 OneNote와 Leanote 콘텐츠를 모두 한 곳으로 통합할 계획입니다. 결국 Joplin 에 정착하기로 했습니다. 이 문서는 전체 내보내기 및 가져오기 메모 프로세스의 일부에 중점을 둡니다. 자세한 내용은 아래 Solution 섹션에 나와 있습니다.
🛑 문제 설명 ↑top
빠른 웹 검색은 OneNote 및 Leanote를 Joplin으로 가져오는 방법에 대한 결과를 반환합니다. 검색 결과의 방법은 간단한 메모 형식에 대해 상당히 잘 작동하지만 메모에 테이블, 이미지, 스타일, 중첩 구조 및 이들 모두의 조합이 포함되면 가져온 메모가 엉망으로 보입니다.
📜 솔루션 ↑top
몇 번의 시행착오 끝에 다음 워크플로가 가장 잘 작동합니다.
src
및 href
(이미지 소스 및 링크에 대해 유지)를 제외한 모든 HTML 속성 제거, 이 기사에서는 HTML을 삭제하고 마크다운으로 변환하는 두 가지 중간 단계에 중점을 둘 것입니다.
1️⃣ 1단계 ↑top
일반적인 HTML에는
script
, id
, class
, style
, 데이터 속성 및 훨씬 더 많은 기타 HTML 태그/속성이 포함됩니다. 이들 대부분은 Markdown에서 지원되지 않기 때문에 모든 HTML 태그/속성을 제거하고 필요한 것 중 일부만 남겨두면 나중에 마크다운이 크게 출력됩니다.Beautiful Soup 4이 이 단계에 사용됩니다. 아래 명령은 pip를 사용하여 python 라이브러리를 설치합니다.
pip install beautifulsoup4
설치 후 아래 코드 예제를 실행하면
src
및 href
를 제외한 모든 HTML 속성이 제거되고 모든 script
및 style
태그가 제거됩니다. 나는 또한 이 솔루션을 this SO Q&A 에 게시했습니다.# https://beautiful-soup-4.readthedocs.io/en/latest/#searching-the-tree
from bs4 import BeautifulSoup, NavigableString
def unstyle_html(html):
soup = BeautifulSoup(html, features="html.parser")
# remove all attributes except for `src` and `href`
for tag in soup.descendants:
keys = []
if not isinstance(tag, NavigableString):
for k in tag.attrs.keys():
if k not in ["src", "href"]:
keys.append(k)
for k in keys:
del tag[k]
# remove all script and style tags
for tag in soup.find_all(["script", "style"]):
tag.decompose()
# return html text
return soup.prettify()
2️⃣ 2단계 ↑top
위생 HTML에서 Markdown으로 변환하기 위해 pandoc이 사용됩니다. 이것은 명령줄 도구이며 Python에서 pandoc을 더 쉽게 사용할 수 있도록 pip를 사용하여 외부 라이브러리를 설치합니다.
pip install pypandoc
설치 후 아래 코드 스니펫은 pypandoc을 호출하여 HTML을 Markdown으로 변환하는 방법을 보여줍니다.
pypandoc.convert_file(html_path,
'markdown+pipe_tables+backtick_code_blocks-markdown_attribute',
format='html',
outputfile=md_path)
이 pandoc 문서는 all the supported input and output formats 을 보여줍니다. 형식 뒤의 '더하기' 및 '빼기' 문자열이 궁금하다면 각각 pandoc 확장을 추가하거나 제거하기 위한 것입니다. 이러한 확장을 사용하여 생성된 Markdown 파일은 가장 잘 가져온 Joplin 메모를 제공합니다. 확장에 대한 자세한 내용은 this section을 확인하십시오.
✉ 요약 ↑top
Reference
이 문제에 관하여(DevTip#3: 메모를 Joplin으로 가져오기 위해 HTML을 제거하고 마크다운으로 변환), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/wizlee/sanitize-and-convert-html-to-markdown-for-importing-notes-into-joplin-4537텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)