python 웹 페이지 에서 PDF 파일 로 변환

파충류 의 원인
공식 문서 나 매 뉴 얼 은 찾 아 볼 수 있 지만 종이 판 으로 변 하면 더 쉽게 뒤 집 히 고 기억 할 수 있 지 않 을 까?간단하게 복사 해서 붙 여 넣 으 면 언제 끝 날 지 모 르 겠 어 요.그래서 안 드 로 이 드 의 공식 매 뉴 얼 을 내 려 놓 으 려 고 생각 하기 시작 했다.
전편 의 실현 사고.
  • 분석 페이지
  • BeautifulSoup 라 이브 러 리 사용 습득
  • 기어 내 보 내기
  • 참고 자료:
    * 료 설 봉 의 강 좌 를 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)
    마지막 효과 도
    这里写图片描述
    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기