python csdn 모든 블 로그 다운로드 및 PDF 변환 실현

우 리 는 프로 그래 밍 을 배 웁 니 다.공부 할 때 유용 한 지식 점 을 보존 하고 싶 습 니 다.우 리 는 지식 점 의 내용 을 기어 내 려 pdf 형식 으로 바 꿀 수 있 습 니 다.우리 가 휴대 전 화 를 가지 고 한가 할 때 뒤 져 볼 수 있 도록 편리 합 니 다.매우 편리 합 니 다.
먼저 하나의 블 로그 다운로드 pdf 형식 으로 전환 하 는 작업 을 하 겠 습 니 다.
在这里插入图片描述
python 에서 html 를 pdf 로 바 꾸 는 데 자주 사용 되 는 도 구 는 Wkhtmltopdf 공구 꾸러미 입 니 다.python 환경 에서 pdfkit 는 이 공구 꾸러미 의 패키지 클래스 입 니 다.어떻게 pdfkit 를 사용 하고 어떻게 설정 합 니까?다음 과 같은 몇 가지 절차 로 나 뉜 다.
wkhtmltopdf 설치 패 키 지 를 다운로드 하고 컴퓨터 에 설치 합 니 다.
다운로드 주소:https://wkhtmltopdf.org/downloads.html
在这里插入图片描述
제 가 내 린 것 은 이 버 전 입 니 다.설치 할 때 경 로 를 기억 하고 호출 할 때 경 로 를 사용 해 야 합 니 다.
在这里插入图片描述
개발 도구
  • python
  • pycharm
  • pdfkit (pip install pdfkit)
  • lxml
  • 오늘 목표:블 로 거들 의 모든 블 로 그 를 다운로드 하고 pdf 형식 으로 저장 합 니 다.
    기본 사고방식:
    1、url + headers
    2.웹 페이지 분석:CSDN 웹 페이지 는 정적 웹 페이지 로 웹 소스 코드 를 가 져 오 기 를 요청 합 니 다.
    3,lxml 분석 획득 bokeurls, author_name
    4,반복,boke 획득url
    5.xpath 분석 파일 이름 가 져 오기
    6.css 선택 기 에서 탭 텍스트 의 주 체 를 가 져 옵 니 다.
    7.구조 조합 html 파일
    8.html 파일 저장
    9.파일 변환
    웹 페이지 분석:CSDN 웹 페이지 는 정적 웹 페이지 로 웹 소스 코드 를 요청 합 니 다.
    start_url =“https://i1bit.blog.csdn.net/예 를 들 면
    동기 화 로 딩 으로 사이트 주 소 를 확인 합 니 다.
    在这里插入图片描述
    css 선택 기 에서 탭 텍스트 를 가 져 오 는 주 체 는 코드 요점 부분 입 니 다.
    css 문법 부분
    
    # css            
            html_css = parsel.Selector(response_2)
            html_content = html_css.css('article').get()
    #     html  
            html = \
                '''
                    <!DOCTYPE html>
                        <html lang="en">
                        <head>
                            <meta charset="UTF-8">
                            <title>Title</title>
                        </head>
                        <body>
                            {}
                        </body>
                    </html>
                '''.format(html_content)
    
    블 로 거의 블 로 거 를 클릭 하여 개발 자 도 구 를 엽 니 다.
    在这里插入图片描述
    
    # css            
            html_css = parsel.Selector(response_2)
            html_content = html_css.css('article').get()
    #     html  
            html = \
                '''
                    <!DOCTYPE html>
                        <html lang="en">
                        <head>
                            <meta charset="UTF-8">
                            <title>Title</title>
                        </head>
                        <body>
                            {}
                        </body>
                    </html>
                '''.format(html_content)
    
    파일 변환
    
       config = pdfkit.configuration(wkhtmltopdf=r'     wkhtmltopdf.exe   ')
                pdfkit.from_file(
                             html  ,
                             pdf  ,
                    configuration=config
                ) 
                #          ,     
                pdfkit.from_file(
                             html  ,
                             pdf  ,
                configuration=pdfkit.configuration(wkhtmltopdf=r'     wkhtmltopdf.exe   ')
                )
    
    원본 디 스 플레이:
    
    import parsel, os, pdfkit
    from lxml import etree
    from requests_html import HTMLSession
    session = HTMLSession()
    
    
    
    def main():
        # 1、url + headers
        start_url = input(r'   csdn     :')
        headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 '
                          '(KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36'
        }
    
        # 2、    : CSDN       ,          
        response_1 = session.get(start_url, headers=headers).text
    
    
        # 3、    boke_urls, author_name
        html_xpath_1 = etree.HTML(response_1)
    
        author_name = html_xpath_1.xpath(r'//*[@id="floor-user-profile_485"]/div/div[1]/div[2]/div[2]/div[1]/div[1]/text()')[0]
    
        boke_urls = html_xpath_1.xpath(r'//article[@class="blog-list-box"]/a/@href')
    
    
        # 4、    ,   boke_url
        for boke_url in boke_urls:
    
            # 5、  
            response_2 = session.get(boke_url, headers=headers).text
    
            # 6、xpath       
            html_xpath_2 = etree.HTML(response_2)
            file_name = html_xpath_2.xpath(r'//h1[@id="articleContentId"]/text()')[0]
    
    
            # 7、css            
            html_css = parsel.Selector(response_2)
            html_content = html_css.css('article').get()
    
            # 8、    html  
            html = \
                '''
                    <!DOCTYPE html>
                        <html lang="en">
                        <head>
                            <meta charset="UTF-8">
                            <title>Title</title>
                        </head>
                        <body>
                            {}
                        </body>
                    </html>
                '''.format(html_content)
    
            # 9、       ,       html       pdf  
            if not os.path.exists(r'{}-html'.format(author_name)):
                os.mkdir(r'{}-html'.format(author_name))
    
            if not os.path.exists(r'{}-pdf'.format(author_name)):
                os.mkdir(r'{}-pdf'.format(author_name))
    
            # 10、  html  
            try:
                with open(r'{}-html/{}.html'.format(author_name, file_name), 'w', encoding='utf-8') as f:
                    f.write(html)
            except Exception as e:
                print('     ')
    
            # 11、     
            try:
                config = pdfkit.configuration(wkhtmltopdf=r'C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe')
                pdfkit.from_file(
                    '{}-html/{}.html'.format(author_name, file_name),
                    '{}-pdf/{}.pdf'.format(author_name, file_name),
                    configuration=config
                )
                a = print(r'--      :{}.pdf'.format(file_name))
    
            except Exception as e:
                continue
    
    
    if __name__ == '__main__':
       main()
    
    
    코드 조작:
    在这里插入图片描述
    이로써 python 이 csdn 의 모든 블 로 그 를 다운로드 하고 PDF 로 전환 하 는 것 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 python 블 로 그 를 다운로드 하고 PDF 로 전환 하 는 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

    좋은 웹페이지 즐겨찾기