來源:Python 技術(shù)「ID: pythonall」 Playwright 是微軟出的一款自動(dòng)化測(cè)試工具,在做爬蟲的時(shí)候,只需要點(diǎn)點(diǎn)點(diǎn)操作就能將代碼錄下來,用 python 腳本運(yùn)行。有非常強(qiáng)大的 API,完全滿足爬蟲的需要。 安裝需要安裝 playwright 第三方模塊和Chromium、Firefox、WebKit等瀏覽器的驅(qū)動(dòng)文件。 pip install playwright 錄制playwright 在抓取頁面的時(shí)候是不需要太多寫代碼的,錄制就完事了。首先看看有哪些命令參數(shù):
這里有好幾個(gè)選項(xiàng):
將腳本文件存放在 D 盤的 playwright_demo.py 中。 # 命令行鍵入 打開 D:\playwright_demo.py 在代碼中可以看到:
headless 是 False 的時(shí)候會(huì)出現(xiàn)瀏覽器,如果是 True 就以沒有瀏覽器的方式啟動(dòng)。 PagePage 就是單獨(dú)的一個(gè)瀏覽器 tab 標(biāo)簽(第一種)創(chuàng)建,也可以是 a 標(biāo)簽中 # 1 方法page 有多個(gè)常用的方法:on、goto、fill、inner_html、content、query_selector、query_selector_all 等等。 一、goto():用于跳轉(zhuǎn)網(wǎng)址。 二、on():事件的監(jiān)聽,可以用來監(jiān)聽瀏覽器中發(fā)生的任何事件,如:close、console、download、request、response 等等。 用來監(jiān)聽 request 請(qǐng)求,打印出 post 的提交數(shù)據(jù)和請(qǐng)求地址:
用來監(jiān)聽 response 響應(yīng),并打印出百度中的 png 結(jié)尾的圖片: from playwright.sync_api import Playwright, sync_playwright 三、fill() 用于填寫 input 框,在百度搜索框中寫入 111:
四、inner_html()、content() 獲取頁面源代碼: page.inner_html('//html') 五、query_selector 選擇一個(gè)節(jié)點(diǎn),當(dāng)匹配到多個(gè)節(jié)點(diǎn),只會(huì)返回第一個(gè),獲取 class='toindex' 的文本:
六、query_selector_all 選擇所有的節(jié)點(diǎn),獲取百度頁面上所有 input 的 name: handles = page.query_selector_all('input') 選擇器Text 選擇器以 jd 網(wǎng)站為例:下面兩行可以選擇登錄或者注冊(cè)。
如果不確定是否存在某個(gè) text 也可以使用 CSS 選擇器CSS 選擇器就是使用的默認(rèn) CSS 引擎。Playwright 也自定義了一些偽類::visible、:text、:has 等等。 用 id 的方式登錄到京東網(wǎng)站: page.click('#loginsubmit') 根據(jù)節(jié)點(diǎn)的屬性選擇:
根據(jù) CSS 和文本選擇: page.click('a:has-text('電腦')') 根據(jù) CSS 和子節(jié)點(diǎn)選擇,li、img 是標(biāo)簽, seckill_mod_goods_link_img 是 img 的 class 值:
XPathPlaywright 支持 XPath 選擇元素,自動(dòng)化錄制 python 腳本一般是使用的 text 而不是 Xpath。 page.click('//span[contains(@class, 'spinner__loading')]|//div[@id='confirmation']') N-thN-th 選擇第幾個(gè): 點(diǎn)擊第一個(gè)按鈕
點(diǎn)擊最后一個(gè)按鈕 page.click('button >> nth=-1') 總結(jié)本文介紹了 Playwright 的用法和部分 api,抓取一個(gè)網(wǎng)站主要的操作就是獲取 url 地址、參考 post 數(shù)據(jù)、request、response、元素,本篇文章都有涉及。還有大量的 api 可以參考官方網(wǎng)站。 參考
|
|