亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > python基于pyppeteer制作PDF文件

python基于pyppeteer制作PDF文件

熱門標(biāo)簽:北京外呼電銷機(jī)器人招商 鄭州智能外呼系統(tǒng)中心 電銷機(jī)器人 金倫通信 400電話 申請 條件 云南地圖標(biāo)注 crm電銷機(jī)器人 賓館能在百度地圖標(biāo)注嗎 南京crm外呼系統(tǒng)排名 汕頭電商外呼系統(tǒng)供應(yīng)商

Pyppeteer 是什么

介紹 Pyppeteer 之前,有必要先介紹一下 Puppeteer,Puppeteer 是谷歌官方出的一個(gè)通過DevTools協(xié)議控制headless Chrome的Node庫。通過Puppeteer可以直接控制Chrome瀏覽器模擬大部分用戶操作。

所謂Headless Chrome 就是 Chrome 瀏覽器的無界面形態(tài)。

而 Pyppeteer 就是 Puppeteer 的 Python 版本非官方實(shí)現(xiàn),它是一位來自于日本的工程師依據(jù) Puppeteer 的一些功能開發(fā)出來的非官方版本

Pyppeteer 采用了 Python 的 async 機(jī)制,需要Python3.5 及以上版本才支持。

Pyppeteer能做什么

但凡是需要通過Chrome瀏覽器手動完成的操作都可以通過 Pyppeteer 自動完成,例如:

  • 生成頁面截圖
  • 生成PDF文件
  • 抓取單頁面應(yīng)用并生成預(yù)先呈現(xiàn)的內(nèi)容
  • 從網(wǎng)站抓取你需要的內(nèi)容
  • 自動表單提交,UI測試,鍵盤輸入等

截圖

例如將頁面生成截圖可以直接調(diào)用 page.screenshot 方法

import asyncio
from pyppeteer import launch

async def main():
 browser = await launch()
 page = await browser.newPage()
 await page.goto('https://foofish.net')
 await page.screenshot({'path': 'example.png'})
 await browser.close()

asyncio.get_event_loop().run_until_complete(main())

截圖功能在海報(bào)分享等場景用的多,有看過有贊工程師分享的一篇文章,就有用到Puppeteer來做海報(bào)分享,性能比Canvas高。

而將網(wǎng)頁轉(zhuǎn)換為PDF的應(yīng)用場景更多,比如將網(wǎng)站博客、專欄,或者公眾號文章批量導(dǎo)出PDF,方便離線閱讀,比如我們最近做的一個(gè)醫(yī)療項(xiàng)目需要將用戶填寫的資料支持PDF形式批量導(dǎo)出,就是用的Pyppeteer

導(dǎo)出PDF

導(dǎo)出pdf直接調(diào)用page.pdf方法就可以, 代碼非常簡潔

import asyncio
from pyppeteer import launch

async def main():
 browser = await launch()
 page = await browser.newPage()
 await page.goto('https://foofish.net')
 await page.pdf({
  "path": "example.pdf", "format": 'A4'})
 await browser.close()

asyncio.get_event_loop().run_until_complete(main())

接下來我們以公眾號文章為例,將html頁面制作成一個(gè)PDF文件。

公眾號鏈接導(dǎo)出PDF示例

安裝 pyppeteer

pip install pyppeteer

任意找一篇公眾號的文章鏈接

 url = "https://mp.weixin.qq.com/s/6VBXs19icV0O5hT7cHYwgw"

完成代碼:

 browser = await launch(
  options={'headless': True,
     'args': ['--no-sandbox',
       '–disable-gpu',
       '–disable-dev-shm-usage',
       '–disable-setuid-sandbox',
       '–no-first-run',
       '–no-zygote',
       '–single-process'
       ]}, )
 page = await browser.newPage()
 url = "https://mp.weixin.qq.com/s/6VBXs19icV0O5hT7cHYwgw"
 await page.goto(url)
 file_name = "test.pdf"
 await page.pdf({"path": file_name, "format": 'A4'})
 await browser.close()

第一次運(yùn)行的時(shí)候,會自動下載chromium瀏覽器,chromium是chrome的開源版本, 需要幾分鐘才能下載完

[W:pyppeteer.chromium_downloader] start chromium download.
Download may take a few minutes.
100%|██████████| 127496521/127496521 [00:2000:00, 6268578.80it/s]
[W:pyppeteer.chromium_downloader] 
chromium download done.
[W:pyppeteer.chromium_downloader] chromium extracted to: C:\Users\lzjun\AppData\Local\pyppeteer\pyppeteer\local-chromium\575458

執(zhí)行完成后,我們來預(yù)覽下pdf文件

和原文鏈接對比,發(fā)現(xiàn)文章中的圖片丟失了。

通過分析,原來是頁面源代碼中,img 標(biāo)簽沒有src屬性,只有個(gè)data-src 屬性,默認(rèn)情況下圖片是無法正常顯示的,圖片之所有能在瀏覽器能正常展示出來,是有個(gè)js腳本動態(tài)地修改了dom元素為 img src='xxxx'>

這個(gè)網(wǎng)頁使用的是一種叫懶加載的技術(shù)展示圖片內(nèi)容,所謂懶加載就是圖片不會一次全部下載完,而是當(dāng)前瀏覽到什么位置,就加載該處的圖片,這樣能提高頁面的響應(yīng)速度,同時(shí)減輕服務(wù)器性能。

所以,我們也可以通過js代碼模擬真人瀏覽網(wǎng)頁一樣,滾動鼠標(biāo),不停地往下滑動,將圖片動態(tài)加載出來。

最后,完整代碼就變成了這樣:

async def main():
    browser = await launch()
    page = await browser.newPage()
    url = "https://mp.weixin.qq.com/s/6VBXs19icV0O5hT7cHYwgw"
    await page.goto(url)
    await page.evaluate('''async () => {
                    await new
                Promise((resolve, reject) => {
                    var
                totalHeight = 0;
                var
                distance = 100;
                var
                timer = setInterval(() => {
                    var
                scrollHeight = document.body.scrollHeight;
                window.scrollBy(0, distance);
                totalHeight += distance;

                if (totalHeight >= scrollHeight){
                clearInterval(timer);
                resolve();
                }
                }, 100);
                });
        }''')
    await page.pdf({
        "path": "test.pdf", "format": 'A4'})
    await browser.close()

if __name__ == '__main__':
    asyncio.get_event_loop().run_until_complete(main())

將js 代碼封裝成一個(gè)字符串當(dāng)作參數(shù)傳給 page.evaluate 函數(shù), 該代碼就是獲不斷滾動頁面,直到頁面底部為止。這樣整個(gè)頁面的圖片就全部加載出來了。

效果看起來還不錯,和原頁面的樣式是一樣的

在Pyppeteer實(shí)踐應(yīng)用過程中,也遇到不少坑,最后都逐個(gè)解決了,這可以單獨(dú)寫一篇文章,如果你在使用過程中遇到任何問題歡迎與我交流

以上就是python基于pyppeteer制作PDF文件的詳細(xì)內(nèi)容,更多關(guān)于python pyppeteer制作PDF文件的資料請關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • python爬蟲 Pyppeteer使用方法解析
  • python爬蟲神器Pyppeteer入門及使用
  • python pyppeteer 破解京東滑塊功能的代碼
  • 詳解pyppeteer(python版puppeteer)基本使用
  • python爬蟲之pyppeteer庫簡單使用

標(biāo)簽:梅州 文山 浙江 西寧 錫林郭勒盟 石家莊 昆明 懷化

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《python基于pyppeteer制作PDF文件》,本文關(guān)鍵詞  python,基于,pyppeteer,制作,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《python基于pyppeteer制作PDF文件》相關(guān)的同類信息!
  • 本頁收集關(guān)于python基于pyppeteer制作PDF文件的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    亚洲第一色在线| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 九九九网站| 日日日夜夜操| 国产亚洲精品成人a在线| 日韩专区亚洲综合久久| 欧美大片一区| 成人影视在线播放| 精品国产亚一区二区三区| 亚欧成人乱码一区二区| 久久国产影视免费精品| 国产麻豆精品高清在线播放| 亚洲www美色| 香蕉视频三级| 国产韩国精品一区二区三区| 日本特黄特色aa大片免费| 黄色福利| 亚洲天堂在线播放| 欧美国产日韩精品| 国产一区二区精品在线观看| 高清一级淫片a级中文字幕| 一本伊大人香蕉高清在线观看| 高清一级淫片a级中文字幕| 可以免费看毛片的网站| 成人影视在线播放| 可以免费看毛片的网站| 国产精品自拍一区| 台湾毛片| 久草免费在线观看| 黄色免费三级| 天堂网中文字幕| 欧美一级视频免费观看| 超级乱淫伦动漫| 欧美国产日韩精品| 亚洲精品永久一区| 欧美国产日韩精品| 黄色福利| 色综合久久天天综合| 精品在线视频播放| 欧美另类videosbestsex | 国产麻豆精品高清在线播放| 韩国毛片免费| 超级乱淫伦动漫| 日韩专区亚洲综合久久| 国产a视频精品免费观看| 国产综合91天堂亚洲国产| 欧美国产日韩精品| 91麻豆精品国产高清在线| 国产a视频精品免费观看| 二级片在线观看| 九九久久国产精品大片| 91麻豆精品国产高清在线| 国产高清在线精品一区a| 国产精品免费久久| 精品久久久久久免费影院| 日韩专区亚洲综合久久| 国产麻豆精品高清在线播放| 91麻豆爱豆果冻天美星空| 成人免费高清视频| 高清一级淫片a级中文字幕| 亚洲天堂在线播放| 国产麻豆精品高清在线播放| 日韩男人天堂| 99久久精品国产麻豆| 欧美日本二区| 99久久视频| 麻豆系列 在线视频| 日韩中文字幕在线观看视频| 成人免费网站久久久| 美女免费毛片| 欧美日本二区| 日韩专区亚洲综合久久| 韩国三级视频网站| 国产a视频精品免费观看| 国产精品1024在线永久免费| 99久久视频| 免费国产在线观看| 日韩av片免费播放| 国产高清在线精品一区a| 国产不卡高清在线观看视频| 青青久在线视频| 国产一区二区精品在线观看| 久久99这里只有精品国产| 国产一区二区精品在线观看| 国产网站免费视频| 午夜欧美成人久久久久久| 超级乱淫伦动漫| 国产不卡高清在线观看视频| 免费一级生活片| 日本特黄特色aa大片免费| 亚洲第一色在线| 国产一区二区精品在线观看| 韩国三级香港三级日本三级| 天堂网中文字幕| 日韩在线观看网站| 天天色成人| 精品视频一区二区| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 欧美大片一区| 日韩男人天堂| 久久99这里只有精品国产| 你懂的日韩| 国产视频一区二区在线观看| 韩国三级香港三级日本三级| 久久99这里只有精品国产| 韩国三级视频网站| 黄视频网站免费| 免费一级生活片| 日韩在线观看免费完整版视频| 九九精品在线| 亚洲第一色在线| 欧美激情影院| 国产伦精品一区二区三区在线观看| 999久久66久6只有精品| 成人免费网站久久久| 日韩在线观看网站| 九九久久国产精品大片| 美女免费毛片| 黄视频网站在线看| 亚欧成人乱码一区二区| 韩国三级视频网站| 久久精品免视看国产成人2021| 国产韩国精品一区二区三区| 欧美激情一区二区三区在线| 亚洲精品久久久中文字| a级毛片免费观看网站| 国产伦理精品| 国产精品自拍一区| 黄色福利| 亚欧成人乱码一区二区| 欧美另类videosbestsex | 国产高清在线精品一区a| 亚洲女人国产香蕉久久精品| 免费一级生活片| 成人免费网站久久久| 香蕉视频三级| 欧美国产日韩精品| 天堂网中文字幕| 黄色免费三级| 你懂的日韩| 99久久视频| 四虎影视久久| 九九久久国产精品大片| 欧美激情一区二区三区视频 | 久草免费在线观看| 亚洲www美色| 国产福利免费视频| 久久国产影视免费精品| 久久国产影视免费精品| 日韩一级黄色片| 999久久66久6只有精品| 国产福利免费视频| 欧美激情影院| 青青青草视频在线观看| 999久久66久6只有精品| 日日日夜夜操| 成人影视在线播放| 久久久久久久久综合影视网| 日本特黄特色aa大片免费| 欧美一级视频免费观看| 二级片在线观看| 精品视频一区二区| 国产一区二区精品在线观看| 欧美一级视频免费观看| 九九免费高清在线观看视频| 国产一区精品| 午夜欧美成人久久久久久| 99久久视频| 欧美18性精品| 国产亚洲精品成人a在线| 欧美18性精品| 国产福利免费视频| 四虎影视久久| 国产一级生活片| 天堂网中文字幕| 亚欧成人乱码一区二区| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 成人高清视频在线观看| 国产精品1024在线永久免费| 国产91丝袜在线播放0| 国产视频一区二区在线观看| 国产精品1024在线永久免费| 精品在线视频播放| 国产成人女人在线视频观看| 国产网站免费视频| 久久国产精品永久免费网站| 欧美18性精品| 日韩在线观看免费完整版视频| 国产亚洲精品成人a在线| 九九九网站| 国产精品1024在线永久免费| 欧美一级视频免费观看| 91麻豆爱豆果冻天美星空| 国产福利免费视频| 国产精品免费久久| 免费一级生活片| 国产一区精品| 精品视频一区二区| 毛片成人永久免费视频| 久久国产精品永久免费网站|