爬蟲6-PlayWright(仿真模擬器)
前言:
我們來講講PlayWright,他是一個微軟開發的瀏覽器模擬器,也可以用來測試網站對於瀏覽器的相容性,他提供了chrome,firefox,webkit三個模擬器,之前在使用seleium還必須特別下載driver然後配置路徑給他,有點不太好用,如果seleium跟playwright 兩個要相比的話,我會說playwright 更好用,更可以直接對element 給執行click 的動作,真的擬仿操作網站的行(未來考慮做一個流量機器人來玩)
Python 環境安裝:
pip install playwright
here is install browser emulate
playwright install
我把爬蟲最常用的幾個功能列在下面:
a.selector的基本用法:
1.以 // 或 / 或者 .. 開頭的,判斷為xpath
pp = page.querySelector("xpath=//h2")
pp = page.querySelector("//h2")
2.以引號 "" 或者 ' 開頭的,判斷為text
ppp = page.querySelector("text=文本輸入") \
ppp = page.querySelector("'文本輸入'")
注意:雙引號里有一個單引號,不然無法識別
3.其他的,都判斷為css
p = page.querySelector("css=h2")
p = page.querySelector("h2")
b.wait_for_selector:
等待你找的element出現後就會繼續往下,沒有則hand住,直到出現為止,
#會等待element已經被生成才會往下
page.wait_for_selector('div.thumb-overlay-albums > a')
c.query_selector:
如果有重複地class名,則會以找到第一個優先回傳,在尋找class 的時候同一個element無法抓取兩個以上的class 名,必須挑一個
#正常使用
page.query_selector('div.thumb-overlay-albums > a')
# if we had duplcate class name we will failed get element
# 這個會失效
page.query_selector('div.thumb-overlay-albums thumb > a')
d.query_selector_all:
可以尋找多個element以陣列方式存下來
#正常使用
arrary_element = page.query_selecto_all(r'div.thumb-overlay-albums > a')
print(arrary_element)
範例:
from playwright.sync_api import sync_playwright
playwr = sync_playwright().start()
browser = playwr.firefox.launch(
headless=False,
timeout=1000 * 80,
)
context = browser.new_context()
page = context.new_page()
page.goto(self.rootUrl)
# page.wait_for_timeout(10000)
page.wait_for_selector('div.thumb-overlay-albums > a')
這邊的示範是開啟模擬器的browser然後再等待某一element 有確實顯現的動作
小提醒:
1.在使用完playwright的物件後,不使用狀況下一定要del 掉它,要不然會有leak的問題
2.playwright.sync_api在Thrading 當中必須重新產生物件,不能重複使用
留言
張貼留言