python 웹 페이지 에서 PDF 파일 로 변환
공식 문서 나 매 뉴 얼 은 찾 아 볼 수 있 지만 종이 판 으로 변 하면 더 쉽게 뒤 집 히 고 기억 할 수 있 지 않 을 까?간단하게 복사 해서 붙 여 넣 으 면 언제 끝 날 지 모 르 겠 어 요.그래서 안 드 로 이 드 의 공식 매 뉴 얼 을 내 려 놓 으 려 고 생각 하기 시작 했다.
전편 의 실현 사고.
* 료 설 봉 의 강 좌 를 PDF 전자 책 으로 바꾸다.
* 요청 문서
* 아름 다운 수프 문서
배치 하 다.
우 분투 에서 Pycharm 실행 성공
PDF 를 변환 하려 면 wkhtmltopdf 를 다운로드 해 야 합 니 다.
구체 적 과정
웹 분석
다음 과 같은 웹 페이지 는 이 웹 페이지 의 본문 과 제목,그리고 왼쪽 네 비게 이 션 바 의 모든 웹 주 소 를 가 져 오 는 것 입 니 다.
다음 일 은 이 라벨 들 을 찾 는 거 야..
Requests 사용
자세 한 참고 문 서 는 Requests 를 사용 하여 html 를 가 져 오고 프 록 시 를 사용 하여 벽 을 넘 는 것 입 니 다.(사이트 에 직접 접근 할 수 없고 VPN 이 필요 합 니 다)
proxies={
"http":"http://vpn IP:port",
"https":"https://vpn IP:port",
}
response=requests.get(url,proxies=proxies)
Beautiful Soup 사용참고 자료 에 Beautiful Soup 문서 가 있 습 니 다.이 문 서 를 다 본 후에 알 수 있 듯 이 두 가지 이 야 기 를 했 습 니 다.하 나 는 탭 을 찾 는 것 이 고 하 나 는 탭 을 수정 하 는 것 입 니 다.
본문 에서 해 야 할 일 은:
1.제목 과 모든 사이트 주 소 를 가 져 옵 니 다.탭 찾기 와 관련 된 것 입 니 다.
# , href description, true
# href description <a> ,( a href)
def has_href_but_no_des(tag):
return tag.has_attr('href') and not tag.has_attr('description')
# ,
def parse_url_to_html(url):
response=requests.get(url,proxies=proxies)
soup=BeautifulSoup(response.content,"html.parser")
s=[]#
title=[]#
tag=soup.find(id="nav")# id "nav" ,
for i in tag.find_all(has_href_but_no_des):
s.append(i['href'])
title.append(i.text)
# , html
htmls = "<html><head><meta charset='UTF-8'></head><body>"
with open("android_training_3.html",'a') as f:
f.write(htmls)
위 에서 가 져 온 사이트 주 소 를 분석 하고 본문 을 가 져 오 며 그림 을 꺼 내 로 컬 에 저장 합 니 다.관련 된 것 은 탭 찾기 와 속성 수정 입 니 다.
# ,
def get_htmls(urls,title):
for i in range(len(urls)):
response=requests.get(urls[i],proxies=proxies)
soup=BeautifulSoup(response.content,"html.parser")
htmls="<div><h1>"+str(i)+"."+title[i]+"</h1></div>"
tag=soup.find(class_='jd-descr')
# image ,
for img in tag.find_all('img'):
im = requests.get(img['src'], proxies=proxies)
filename = os.path.split(img['src'])[1]
with open('image/' + filename, 'wb') as f:
f.write(im.content)
img['src']='image/'+filename
htmls=htmls+str(tag)
with open("android_training_3.html",'a') as f:
f.write(htmls)
print(" (%s) [%s] download end"%(i,title[i]))
htmls="</body></html>"
with open("android_training_3.html",'a') as f:
f.write(htmls)
2.PDF 로 전환이 단 계 는 wkhtmltopdf 를 다운로드 해 야 합 니 다.Windows 에서 프로그램 을 실행 하 는 중 오류 가 발생 했 습 니 다.Ubuntu 에서 가능 합 니 다.
def save_pdf(html):
"""
html pdf
"""
options = {
'page-size': 'Letter',
'encoding': "UTF-8",
'custom-header': [
('Accept-Encoding', 'gzip')
]
}
pdfkit.from_file(html, "android_training_3.pdf", options=options)
마지막 효과 도이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.