最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python實(shí)現(xiàn)csdn全部博文下載并轉(zhuǎn)PDF

 更新時(shí)間:2021年06月15日 10:25:15   作者:武亮宇  
我們學(xué)習(xí)編程,在學(xué)習(xí)的時(shí)候,會(huì)有想把有用的知識(shí)點(diǎn)保存下來(lái),我們可以把知識(shí)點(diǎn)的內(nèi)容爬下來(lái)轉(zhuǎn)變成pdf格式,方便我們拿手機(jī)可以閑時(shí)翻看,是很方便的,本文就介紹一下如何實(shí)現(xiàn)

我們學(xué)習(xí)編程,在學(xué)習(xí)的時(shí)候,會(huì)有想把有用的知識(shí)點(diǎn)保存下來(lái),我們可以把知識(shí)點(diǎn)的內(nèi)容爬下來(lái)轉(zhuǎn)變成pdf格式,方便我們拿手機(jī)可以閑時(shí)翻看,是很方便的

先來(lái)一個(gè)單個(gè)的博文下載轉(zhuǎn)pdf格式的操作

在這里插入圖片描述

python中將html轉(zhuǎn)化為pdf的常用工具是Wkhtmltopdf工具包,在python環(huán)境下,pdfkit是這個(gè)工具包的封裝類(lèi)。如何使用pdfkit以及如何配置呢?分如下幾個(gè)步驟。

下載wkhtmltopdf安裝包,并且安裝到電腦上。
下載地址:https://wkhtmltopdf.org/downloads.html

在這里插入圖片描述

我下的是這個(gè)版本,安裝的時(shí)候要記住路徑,之后調(diào)用要用到路徑

在這里插入圖片描述

開(kāi)發(fā)工具

  • python
  • pycharm
  • pdfkit (pip install pdfkit)
  • lxml

今天目標(biāo):博主的全部博文下載,并且轉(zhuǎn)pdf格式保存

基本思路:

1、url + headers
2、分析網(wǎng)頁(yè): CSDN網(wǎng)頁(yè)是靜態(tài)網(wǎng)頁(yè), 請(qǐng)求獲取網(wǎng)頁(yè)源代碼
3、lxml解析獲取boke_urls, author_name
4、循環(huán)遍歷,得到 boke_url
5、xpath解析獲取文件名
6、css選擇器獲取標(biāo)簽文本的主體
7、構(gòu)造拼接html文件
8、保存html文件
9、文件的轉(zhuǎn)換

分析網(wǎng)頁(yè): CSDN網(wǎng)頁(yè)是靜態(tài)網(wǎng)頁(yè), 請(qǐng)求獲取網(wǎng)頁(yè)源代碼
start_url =“https://i1bit.blog.csdn.net/” 為例
確定網(wǎng)址為同步加載

在這里插入圖片描述

css選擇器獲取標(biāo)簽文本的主體為代碼要點(diǎn)部分
css語(yǔ)法部分

# css選擇器獲取標(biāo)簽文本的主體
        html_css = parsel.Selector(response_2)
        html_content = html_css.css('article').get()
# 構(gòu)造拼接html文件
        html = \
            '''
                <!DOCTYPE html>
                    <html lang="en">
                    <head>
                        <meta charset="UTF-8">
                        <title>Title</title>
                    </head>
                    <body>
                        {}
                    </body>
                </html>
            '''.format(html_content)

點(diǎn)開(kāi)博主的一篇博文打開(kāi)開(kāi)發(fā)者工具

在這里插入圖片描述

# css選擇器獲取標(biāo)簽文本的主體
        html_css = parsel.Selector(response_2)
        html_content = html_css.css('article').get()
# 構(gòu)造拼接html文件
        html = \
            '''
                <!DOCTYPE html>
                    <html lang="en">
                    <head>
                        <meta charset="UTF-8">
                        <title>Title</title>
                    </head>
                    <body>
                        {}
                    </body>
                </html>
            '''.format(html_content)

文件的轉(zhuǎn)換

   config = pdfkit.configuration(wkhtmltopdf=r'這里為下載wkhtmltopdf.exe的路徑')
            pdfkit.from_file(
                第一個(gè)參數(shù)要轉(zhuǎn)變的html文件,
                第二個(gè)參數(shù)轉(zhuǎn)變后的pdf文件,
                configuration=config
            ) 
            # 上面這樣寫(xiě)清楚一點(diǎn),也可以直接
            pdfkit.from_file(
                第一個(gè)參數(shù)要轉(zhuǎn)變的html文件,
                第二個(gè)參數(shù)轉(zhuǎn)變后的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'請(qǐng)輸入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、分析網(wǎng)頁(yè): CSDN網(wǎng)頁(yè)是靜態(tài)網(wǎng)頁(yè), 請(qǐng)求獲取網(wǎng)頁(yè)源代碼
    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、循環(huán)遍歷,得到 boke_url
    for boke_url in boke_urls:

        # 5、請(qǐng)求
        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選擇器獲取標(biāo)簽文本的主體
        html_css = parsel.Selector(response_2)
        html_content = html_css.css('article').get()

        # 8、構(gòu)造拼接html文件
        html = \
            '''
                <!DOCTYPE html>
                    <html lang="en">
                    <head>
                        <meta charset="UTF-8">
                        <title>Title</title>
                    </head>
                    <body>
                        {}
                    </body>
                </html>
            '''.format(html_content)

        # 9、創(chuàng)建兩個(gè)文件夾, 一個(gè)用來(lái)保存html 一個(gè)用來(lái)保存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('文件名錯(cuò)誤')

        # 11、文件的轉(zhuǎn)換
        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()

代碼操作:

在這里插入圖片描述

到此這篇關(guān)于python實(shí)現(xiàn)csdn全部博文下載并轉(zhuǎn)PDF的文章就介紹到這了,更多相關(guān)python 博文下載并轉(zhuǎn)PDF內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python實(shí)現(xiàn)提取str字符串/json中多級(jí)目錄下的某個(gè)值

    python實(shí)現(xiàn)提取str字符串/json中多級(jí)目錄下的某個(gè)值

    今天小編就為大家分享一篇python實(shí)現(xiàn)提取str字符串/json中多級(jí)目錄下的某個(gè)值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02
  • python判斷自身是否正在運(yùn)行的方法

    python判斷自身是否正在運(yùn)行的方法

    今天小編就為大家分享一篇python判斷自身是否正在運(yùn)行的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-08-08
  • python實(shí)現(xiàn)KNN分類(lèi)算法

    python實(shí)現(xiàn)KNN分類(lèi)算法

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)KNN分類(lèi)算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • Python使用Selenium進(jìn)行Web自動(dòng)化測(cè)試

    Python使用Selenium進(jìn)行Web自動(dòng)化測(cè)試

    Selenium 是一個(gè)用于 Web 應(yīng)用自動(dòng)化測(cè)試的強(qiáng)大工具,可以用來(lái)模擬用戶(hù)操作瀏覽器,從而測(cè)試 Web 應(yīng)用的功能,它支持多種瀏覽器和編程語(yǔ)言,包括 Python,下面我們將介紹如何使用 Selenium 進(jìn)行 Web 自動(dòng)化測(cè)試,需要的朋友可以參考下
    2024-08-08
  • Python處理文本數(shù)據(jù)的方法詳解

    Python處理文本數(shù)據(jù)的方法詳解

    學(xué)習(xí)Python時(shí),它總能讓人深刻體會(huì)到這款語(yǔ)言的魅力。今天小編為大家?guī)?lái)一個(gè)有趣的項(xiàng)目,用Python處理文本數(shù)據(jù),一起來(lái)看看今天的問(wèn)題吧
    2022-06-06
  • 如何利用Python實(shí)現(xiàn)簡(jiǎn)單C++程序范圍分析

    如何利用Python實(shí)現(xiàn)簡(jiǎn)單C++程序范圍分析

    這篇文章主要介紹了如何利用Python實(shí)現(xiàn)簡(jiǎn)單C++程序范圍分析,文章以舉例說(shuō)明及過(guò)程實(shí)現(xiàn)思路的方式展開(kāi)講解,具有一定的的參考價(jià)值,需要的小伙伴可以參考一下,希望對(duì)你有所幫助
    2022-02-02
  • Python修改列表值問(wèn)題解決方案

    Python修改列表值問(wèn)題解決方案

    這篇文章主要介紹了Python修改列表值問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • python 邊緣擴(kuò)充方式的實(shí)現(xiàn)示例

    python 邊緣擴(kuò)充方式的實(shí)現(xiàn)示例

    本文主要介紹了python 邊緣擴(kuò)充方式的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 解決TensorFlow訓(xùn)練內(nèi)存不斷增長(zhǎng),進(jìn)程被殺死問(wèn)題

    解決TensorFlow訓(xùn)練內(nèi)存不斷增長(zhǎng),進(jìn)程被殺死問(wèn)題

    今天小編就為大家分享一篇解決TensorFlow訓(xùn)練內(nèi)存不斷增長(zhǎng),進(jìn)程被殺死問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02
  • 使用Python實(shí)現(xiàn)給企業(yè)微信發(fā)送消息功能

    使用Python實(shí)現(xiàn)給企業(yè)微信發(fā)送消息功能

    本文將介紹如何使用python3給企業(yè)微信發(fā)送消息,文中有詳細(xì)的圖文解說(shuō)及代碼示例,對(duì)正在學(xué)習(xí)python的小伙伴很有幫助,需要的朋友可以參考下
    2021-12-12

最新評(píng)論

五原县| 古浪县| 和硕县| 马尔康县| 泰顺县| 辛集市| 怀仁县| 宿迁市| 蒙城县| 六安市| 桦甸市| 朝阳市| 富蕴县| 宁晋县| 津南区| 通山县| 丰镇市| 措勤县| 西平县| 大宁县| 秭归县| 新巴尔虎左旗| 蒲江县| 翁牛特旗| 剑河县| 乌兰浩特市| 台北县| 克什克腾旗| 威信县| 新泰市| 渭南市| 凤山市| 稷山县| 锡林浩特市| 土默特左旗| 枣阳市| 韶关市| 田东县| 博罗县| 濮阳市| 邹城市|