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

詳解pyppeteer(python版puppeteer)基本使用

 更新時間:2019年06月12日 11:43:11   作者:白灰  
這篇文章主要介紹了詳解pyppeteer(python版puppeteer)基本使用 ,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

一、前言

以前使用selenium的無頭瀏覽器,自從phantomjs2016后慢慢不更新了之后,selenium也開始找下家,這時候谷歌的chrome率先搞出來無頭瀏覽器并開放了各種api,隨后firefox也開始做。

現(xiàn)在selenium的測試也都支持這兩個瀏覽器的無頭模式了,只需要在引入的時候配置一下就可以了。之所以要采用谷歌chrome官方無頭框架puppeteer的python版本pyppeteer,是因為有些網(wǎng)頁是可以檢測到是否是使用了selenium。并且selenium所謂的保護機制不允許跨域cookies保存以及登錄的時候必須先打開網(wǎng)頁然后后加載cookies再刷新的方式很不友好。

二、pyppeteer

github地址:https://miyakogi.github.io/pyppeteer/

pyppeteer這個項目是非官方的,是基于谷歌官方puppeteer的python版本。

注意:本來chrome就問題多多,puppeteer也是各種坑,加上pyppeteer是基于前者的改編python版本,也就是產(chǎn)生了只要前兩個有一個有bug,那么pyppeteer就會原封不動的繼承下來,本來這沒什么,但是現(xiàn)在遇到的問題就是pyppeteer這個項目從18年9月份之后就沒更新過了,前兩者都在不斷的更新迭代,而pyppeteer一直不更新,導致很多bug根本沒人修復。

遇到的錯誤:

1)pyppeteer.errors.NetworkError: Protocol error Network.getCookies: Target close
控制訪問指定url之后await page.goto(url),會遇到上面的錯誤,如果這時候使用了sleep之類的延時也會出現(xiàn)這個錯誤或者類似的time out。

這個問題是puppeteer的bug,但是對方已經(jīng)修復了,而pyppeteer遲遲沒更新,就只能靠自己了,搜了很多人的文章,例如:https://github.com/miyakogi/pyppeteer/issues/171 ,但是我按照這個并沒有成功。
也有人增加一個函數(shù),但調(diào)用這個參數(shù)依然沒解決問題。

async def scroll_page(page):
  cur_dist = 0
  height = await page.evaluate("() => document.body.scrollHeight")
  while True:
    if cur_dist < height:
      await page.evaluate("window.scrollBy(0, 500);")
      await asyncio.sleep(0.1)
      cur_dist += 500
    else:
      break

可以把python第三方庫websockets版本7.0改為6.0就可以了,親測可用。

pip uninstall websockets #卸載websockets
pip install websockets==6.0 #指定安裝6.0版本

2)chromium瀏覽器多開頁面卡死問題
解決這個問題的方法就是瀏覽器初始化的時候添加'dumpio':True。

3)瀏覽器窗口很大,內(nèi)容顯示很小

上面的問題是需要設置瀏覽器顯示大小,默認就是無法正常顯示??梢钥吹巾撁孀髠?cè)右側(cè)都是空白,網(wǎng)站內(nèi)容并沒有完整鋪滿chrome.

browser = await launch({'headless': False,'dumpio':True, 'autoClose':False,'args': ['--no-sandbox', '--window-size=1366,850']})
await page.setViewport({'width':1366,'height':768})

通過上面設置Windows-size和Viewport大小來實現(xiàn)網(wǎng)頁完整顯示。

但是對于那種向下無限加載的長網(wǎng)頁這種情況如果瀏覽器是可見狀態(tài)會顯示不全,針對這種情況的解決方法就是復制當前網(wǎng)頁新開一個標簽頁粘貼進去就正常了

三、實際項目示例

import asyncio
from pyppeteer import launch
import time

async def main():exepath = 'C:/Users/tester02/AppData/Local/Google/Chrome/Application/chrome.exe'
  browser = await launch({'executablePath': exepath, 'headless': False, 'slowMo': 30})
  page = await browser.newPage()
  await page.setViewport({'width': 1366, 'height': 768})
  await page.goto('http://192.168.2.66')
  await page.type("#Login_Name_Input", "test02")
  await page.type("#Login_Password_Input", "12345678", )
  await page.waitFor(1000)
  await page.click("#Login_Login_Btn")
  await page.waitFor(3000)
  await browser.close()

asyncio.get_event_loop().run_until_complete(main())
import asyncio
import time
from pyppeteer import launch


async def gmailLogin(username, password, url):
  #'headless': False如果想要瀏覽器隱藏更改False為True
  # 127.0.0.1:1080為代理ip和端口,這個根據(jù)自己的本地代理進行更改,如果是vps里或者全局模式可以刪除掉'--proxy-server=127.0.0.1:1080'
  browser = await launch({'headless': False, 'args': ['--no-sandbox', '--proxy-server=127.0.0.1:1080']})
  page = await browser.newPage()
  await page.setUserAgent(
    'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36')

  await page.goto(url)

  # 輸入Gmail
  await page.type('#identifierId', username)
  # 點擊下一步
  await page.click('#identifierNext > content')
  page.mouse # 模擬真實點擊
  time.sleep(10)
  # 輸入password
  await page.type('#password input', password)
  # 點擊下一步
  await page.click('#passwordNext > content > span')
  page.mouse # 模擬真實點擊
  time.sleep(10)
  # 點擊安全檢測頁面的DONE
  # await page.click('div > content > span')#如果本機之前登錄過,并且page.setUserAgent設置為之前登錄成功的瀏覽器user-agent了,
  # 就不會出現(xiàn)安全檢測頁面,這里如果有需要的自己根據(jù)需求進行更改,但是還是推薦先用常用瀏覽器登錄成功后再用python程序進行登錄。

  # 登錄成功截圖
  await page.screenshot({'path': './gmail-login.png', 'quality': 100, 'fullPage': True})
  #打開谷歌全家桶跳轉(zhuǎn),以Youtube為例
  await page.goto('https://www.youtube.com')
  time.sleep(10)


if __name__ == '__main__':
  username = '你的gmail包含@gmail.com'
  password = r'你的gmail密碼'
  url = 'https://gmail.com'
  loop = asyncio.get_event_loop()
  loop.run_until_complete(gmailLogin(username, password, url))
# 代碼由三分醉編寫,網(wǎng)址www.sanfenzui.com,參考如下文章:
# https://blog.csdn.net/Chen_chong__/article/details/82950968

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Python在Word文檔中插入圖片的三種方式

    Python在Word文檔中插入圖片的三種方式

    Word不僅僅是一個文字處理工具,它還為用戶提供了圖片插入功能,以增強文檔的表現(xiàn)力,一張好的圖片往往能夠起到畫龍點睛的作用,這篇博客將介紹使用Python在Word文檔中插入圖片的三種方式,需要的朋友可以參考下
    2025-02-02
  • 不同版本中Python matplotlib.pyplot.draw()界面繪制異常問題的解決

    不同版本中Python matplotlib.pyplot.draw()界面繪制異常問題的解決

    這篇文章主要給大家介紹了關于不同版本中Python matplotlib.pyplot.draw()界面繪制異常問題的解決方法,文中介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-09-09
  • cookies應對python反爬蟲知識點詳解

    cookies應對python反爬蟲知識點詳解

    在本篇文章里小編給大家整理關于cookies應對python反爬蟲知識點詳解,有興趣的朋友們可以學習下。
    2020-11-11
  • pytorch torch.expand和torch.repeat的區(qū)別詳解

    pytorch torch.expand和torch.repeat的區(qū)別詳解

    這篇文章主要介紹了pytorch torch.expand和torch.repeat的區(qū)別詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-11-11
  • python好玩的項目—色情圖片識別代碼分享

    python好玩的項目—色情圖片識別代碼分享

    這篇文章主要介紹了python好玩的項目—色情圖片識別,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • python中反射用法實例

    python中反射用法實例

    這篇文章主要介紹了python中反射用法,實例分析了Python中反射的原理與使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-03-03
  • python中decimal模塊的具體使用

    python中decimal模塊的具體使用

    本文主要介紹了python中decimal模塊的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-01-01
  • Python利用flask sqlalchemy實現(xiàn)分頁效果

    Python利用flask sqlalchemy實現(xiàn)分頁效果

    這篇文章主要為大家詳細介紹了利用flask sqlalchemy實現(xiàn)分頁效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • pandas DataFrame 根據(jù)多列的值做判斷,生成新的列值實例

    pandas DataFrame 根據(jù)多列的值做判斷,生成新的列值實例

    今天小編就為大家分享一篇pandas DataFrame 根據(jù)多列的值做判斷,生成新的列值實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • 對Django中內(nèi)置的User模型實例詳解

    對Django中內(nèi)置的User模型實例詳解

    今天小編就為大家分享一篇對Django中內(nèi)置的User模型實例詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08

最新評論

金华市| 镇江市| 错那县| 兴国县| 名山县| 建瓯市| 隆化县| 化德县| 昭苏县| 赫章县| 荃湾区| 城固县| 广州市| 那坡县| 漳平市| 和平区| 天长市| 武冈市| 灵丘县| 西华县| 锦州市| 新野县| 环江| 卓尼县| 滨海县| 麻阳| 偏关县| 靖西县| 临沧市| 芜湖市| 自贡市| 沈丘县| 葫芦岛市| 都安| 松潘县| 卓尼县| 临沂市| 霞浦县| 邳州市| 监利县| 弥渡县|