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

Python使用pyppeteer進行網(wǎng)頁截圖并發(fā)送機器人實例

 更新時間:2024年04月12日 09:45:57   作者:Meepoljd  
這篇文章主要介紹了Python使用pyppeteer進行網(wǎng)頁截圖并發(fā)送機器人實例,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

Pyppeteer是對Puppeteer的一個Python封裝,常用在爬蟲方面,最近使用它做網(wǎng)頁巡檢報告的截圖,記錄一下

腳本截圖

使用pyppeteer其實和我們自己開瀏覽器的邏輯差不多,同時要結(jié)合async一起使用,首先要通過lauch函數(shù)啟動一個瀏覽器,啟動瀏覽器的時候可以設(shè)置啟動參數(shù),其中包括使用的代理服務(wù)器:

browser = await launch(args=["--no-sandbox", "--proxy-server=http://10.1.1.1:8443"])

啟動瀏覽器后我們要開一個新的標(biāo)簽頁來訪問網(wǎng)頁,goto就是用來訪問對應(yīng)的網(wǎng)頁的:

page = await browser.newPage()
await page.goto(url)

現(xiàn)在我們就開始訪問對應(yīng)的網(wǎng)頁了,根據(jù)經(jīng)驗我們都知道有的網(wǎng)頁剛開啟的時候不是完全渲染完的,所以可以添加一個asyncio.sleep(10)來等待十秒鐘:

await asyncio.sleep(10)

如果需要運行一些js腳本語句,可以通過evaluate執(zhí)行:

dimensions = await page.evaluate('''() => {
    return {
        width: document.documentElement.scrollWidth,
        height: document.documentElement.scrollHeight,
    }
}''')

然后可以使用字典訪問對應(yīng)的數(shù)據(jù):

dimensions['height']

接下來就是截圖的操作了,甚至可以同時截成pdf,完整代碼如下:

async def main():
    browser = await launch(args=["--no-sandbox", "--proxy-server=http://10.1.1.1:8443"])
    # 新建選項卡
    page = await browser.newPage()
    await page.goto(url)

    await asyncio.sleep(10)
    dimensions = await page.evaluate('''() => {
       return {
           width: document.documentElement.scrollWidth,
           height: document.documentElement.scrollHeight,
       }
    }''')
    await page.setViewport({'width': 1920, 'height': dimensions['height']})
    await page.screenshot({'path': "test.png", "clip": {"x": 300, "y": 10, "width": 1320, "height": dimensions['height']}})

    await page.pdf({'path': file,  'width': 1920, 'height': dimensions['height']})
    await browser.close()

發(fā)送到機器人

截圖和pdf都生成了,現(xiàn)在都可以發(fā)送給企業(yè)微信機器人了

發(fā)送圖片

def post_img_to_robot(page):
    with open(page, 'rb') as file:
        data = file.read()
        encodestr = base64.b64encode(data)
        image_data = str(encodestr, 'utf-8')
    with open(page, 'rb') as file:
        md = hashlib.md5()
        md.update(file.read())
        image_md5 = md.hexdigest()
    data = {
        "msgtype": "image",
        "image": {
            "base64": image_data,
            "md5": image_md5
        }
    }
    headers = {'content-type': 'application/json;charset=utf-8'}
    body = json.dumps(data)
    requests.post(qy_ex, data=body, headers=headers)

發(fā)送PDF

發(fā)送PDF按照教程需要先調(diào)用upload_media接口,然后在發(fā)送圖片的時候把media_id作為參數(shù)傳入

def post_file_to_robot(file):
    parsed_url = urlparse(qy_ex)
    param = parse_qs(parsed_url.query)
    webHookKey = param["key"][0]
    upload_url = f'https://qyapi.weixin.qq.com/cgi-bin/webhook/upload_media?key={webHookKey}&type=file'
    headers = {
        "Accept": "application/json, text/plain, */*", "Accept-Encoding": "gzip, deflate",
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.100 Safari/537.36"
    }
    data = {'file': open(file, 'rb')}
    req = requests.post(url=upload_url, files=data, headers=headers).json()
    media_id = req["media_id"]

    data = {
        "msgtype": "file",
        "file": {"media_id": media_id}
    }

    requests.post(url=qy_ex, json=data)

發(fā)送效果如下:

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python實現(xiàn)輕松比較兩個文件夾的多種方法

    Python實現(xiàn)輕松比較兩個文件夾的多種方法

    在處理數(shù)據(jù)集時,我們經(jīng)常會遇到兩個文件夾中文件數(shù)目不一致的情況,本文我們就來使用Python比較一下兩個文件夾,輕松實現(xiàn)找出多出的文件,有需要的可以了解下
    2025-09-09
  • Python簡單I/O操作示例

    Python簡單I/O操作示例

    這篇文章主要介紹了Python簡單I/O操作,結(jié)合實例形式分析了Python針對文件的I/O讀寫及cPickle模塊相關(guān)使用操作技巧,需要的朋友可以參考下
    2019-03-03
  • Python面向?qū)ο蟮膬?nèi)置方法梳理講解

    Python面向?qū)ο蟮膬?nèi)置方法梳理講解

    面向?qū)ο缶幊淌且环N編程方式,此編程方式的落地需要使用“類”和 “對象”來實現(xiàn),所以,面向?qū)ο缶幊唐鋵嵕褪菍?nbsp;“類”和“對象” 的使用,今天給大家介紹下python 面向?qū)ο箝_發(fā)及基本特征,感興趣的朋友一起看看吧
    2022-10-10
  • python進程間數(shù)據(jù)交互的幾種實現(xiàn)方式

    python進程間數(shù)據(jù)交互的幾種實現(xiàn)方式

    本文主要介紹了python進程數(shù)據(jù)交互的幾種實現(xiàn)方式,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • Numpy中vstack()和hstack()的使用方式

    Numpy中vstack()和hstack()的使用方式

    文章詳細介紹了Numpy中vstack()和hstack()兩種數(shù)組拼接方法,vstack()是垂直堆疊數(shù)組,需保證除第一軸(行)外,數(shù)組形狀相同,hstack()是按順序堆疊數(shù)組,需保證除第二軸(列)外,數(shù)組形狀相同,兩者都可通過堆疊給定數(shù)組最后形成至少二維的數(shù)組
    2024-10-10
  • python黑魔法之參數(shù)傳遞

    python黑魔法之參數(shù)傳遞

    這篇文章主要介紹了python黑魔法之參數(shù)傳遞,分析了python參數(shù)傳遞的方法,感興趣的小伙伴們可以參考一下
    2016-02-02
  • Python中相見恨晚的技巧(記得收藏)

    Python中相見恨晚的技巧(記得收藏)

    這篇文章主要介紹了一些Python中相見恨晚的使用技巧,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-04-04
  • python一鍵升級所有pip package的方法

    python一鍵升級所有pip package的方法

    下面小編就為大家?guī)硪黄猵ython一鍵升級所有pip package的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • 分享python機器學(xué)習(xí)中應(yīng)用所產(chǎn)生的聚類數(shù)據(jù)集方法

    分享python機器學(xué)習(xí)中應(yīng)用所產(chǎn)生的聚類數(shù)據(jù)集方法

    本文根據(jù) 機器學(xué)習(xí)中常用的聚類數(shù)據(jù)集生成方法 中的內(nèi)容進行編輯實驗和整理而得,有需要的朋友可以參考想,希望可以對大家在聚類數(shù)據(jù)方面有所幫助
    2021-08-08
  • python抓取網(wǎng)站的圖片并下載到本地的方法

    python抓取網(wǎng)站的圖片并下載到本地的方法

    今天小編就為大家分享一篇python抓取網(wǎng)站的圖片并下載到本地的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05

最新評論

沙坪坝区| 北碚区| 四川省| 仁布县| 大田县| 宜都市| 大理市| 鹤庆县| 镇远县| 开平市| 精河县| 象山县| 浑源县| 锦屏县| 商丘市| 平定县| 阿荣旗| 民勤县| 绵阳市| 泌阳县| 襄樊市| 邛崃市| 宁城县| 齐齐哈尔市| 六安市| 贵港市| 阳山县| 正阳县| 山丹县| 龙泉市| 平江县| 朔州市| 庐江县| 红原县| 贡嘎县| 玉林市| 贵定县| 衡山县| 二连浩特市| 清涧县| 淮滨县|