欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python使用pyppeteer進(jìn)行網(wǎng)頁(yè)截圖并發(fā)送機(jī)器人實(shí)例

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

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

腳本截圖

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

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

啟動(dòng)瀏覽器后我們要開一個(gè)新的標(biāo)簽頁(yè)來(lái)訪問(wèn)網(wǎng)頁(yè),goto就是用來(lái)訪問(wèn)對(duì)應(yīng)的網(wǎng)頁(yè)的:

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

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

await asyncio.sleep(10)

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

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

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

dimensions['height']

接下來(lái)就是截圖的操作了,甚至可以同時(shí)截成pdf,完整代碼如下:

async def main():
    browser = await launch(args=["--no-sandbox", "--proxy-server=http://10.1.1.1:8443"])
    # 新建選項(xiàng)卡
    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ā)送到機(jī)器人

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

發(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ā)送圖片的時(shí)候把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é)

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

相關(guān)文章

  • 用Python定時(shí)發(fā)送天氣郵件

    用Python定時(shí)發(fā)送天氣郵件

    大家好,本篇文章主要講的是用Python定時(shí)發(fā)送天氣郵件,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-02-02
  • python獲取字符串中的email

    python獲取字符串中的email

    這篇文章主要介紹了python獲取字符串中的email,通過(guò)調(diào)用re庫(kù),通過(guò)使用compile、findall獲取字符串中的email,下文詳細(xì)實(shí)現(xiàn)過(guò)程需要的小伙伴可以參考一下
    2022-03-03
  • Python Web靜態(tài)服務(wù)器非堵塞模式實(shí)現(xiàn)方法示例

    Python Web靜態(tài)服務(wù)器非堵塞模式實(shí)現(xiàn)方法示例

    這篇文章主要介紹了Python Web靜態(tài)服務(wù)器非堵塞模式實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了Python單進(jìn)程非堵塞模式實(shí)現(xiàn)的Web靜態(tài)服務(wù)器相關(guān)操作技巧,需要的朋友可以參考下
    2019-11-11
  • 使用python進(jìn)行文件處理的庫(kù)存管理

    使用python進(jìn)行文件處理的庫(kù)存管理

    庫(kù)存管理是任何處理實(shí)物商品的企業(yè)的一個(gè)重要方面,Python?提供了各種庫(kù)來(lái)讀取和寫入文件,使其成為管理庫(kù)存的絕佳選擇,它允許我們使用?Python?等編程語(yǔ)言來(lái)操作計(jì)算機(jī)文件系統(tǒng)上的文件,在本文中,我們將探討如何使用文件處理在?Tkinter?中實(shí)現(xiàn)庫(kù)存管理系統(tǒng)
    2023-09-09
  • torch.utils.data.DataLoader與迭代器轉(zhuǎn)換操作

    torch.utils.data.DataLoader與迭代器轉(zhuǎn)換操作

    這篇文章主要介紹了torch.utils.data.DataLoader與迭代器轉(zhuǎn)換操作,文章內(nèi)容接受非常詳細(xì),對(duì)正在學(xué)習(xí)或工作的你有一定的幫助,需要的朋友可以參考一下
    2022-02-02
  • Python Django中間件使用原理及流程分析

    Python Django中間件使用原理及流程分析

    這篇文章主要介紹了Python Django中間件使用原理及流程分析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • 使用Tensorflow?hub完成目標(biāo)檢測(cè)過(guò)程詳解

    使用Tensorflow?hub完成目標(biāo)檢測(cè)過(guò)程詳解

    這篇文章主要為大家介紹了使用Tensorflow?hub完成目標(biāo)檢測(cè)過(guò)程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • python中kmeans聚類實(shí)現(xiàn)代碼

    python中kmeans聚類實(shí)現(xiàn)代碼

    這篇文章主要為大家詳細(xì)介紹了python中kmeans聚類的實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • Python實(shí)現(xiàn)圖像尺寸和格式轉(zhuǎn)換處理的示例詳解

    Python實(shí)現(xiàn)圖像尺寸和格式轉(zhuǎn)換處理的示例詳解

    這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)圖像尺寸獲取和格式轉(zhuǎn)換處理的功能,文中的示例代碼講解詳細(xì),感興趣的可以了解一下
    2023-04-04
  • pytorch的Backward過(guò)程用時(shí)太長(zhǎng)問(wèn)題及解決

    pytorch的Backward過(guò)程用時(shí)太長(zhǎng)問(wèn)題及解決

    這篇文章主要介紹了pytorch的Backward過(guò)程用時(shí)太長(zhǎng)問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02

最新評(píng)論