├── .gitignore ├── browser-info.png ├── custom_response.html ├── get_ajax.py ├── get_all.py ├── get_attr.py ├── get_html.py ├── get_one.py ├── init.py ├── init2.py ├── init3.py ├── location-iphone.png ├── modify_request.py ├── modify_response.py ├── no_picture.png ├── on_load.py ├── screenshot-chromium.png ├── screenshot-firefox.png ├── screenshot-webkit.png ├── script.py ├── webkit_test.py └── webkit_test2.py /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | .vscode/ 3 | *.pyc 4 | .DS_Store -------------------------------------------------------------------------------- /browser-info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Python3WebSpider/PlaywrightTest/14af74340406d44c607b049bd4d49575f1662b0d/browser-info.png -------------------------------------------------------------------------------- /custom_response.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Hack Response 5 | 6 | 7 |

Hack Response

8 | 9 | -------------------------------------------------------------------------------- /get_ajax.py: -------------------------------------------------------------------------------- 1 | from playwright.sync_api import sync_playwright 2 | 3 | 4 | def on_response(response): 5 | if '/api/movie/' in response.url and response.status == 200: 6 | print(response.json()) 7 | 8 | 9 | with sync_playwright() as p: 10 | browser = p.chromium.launch(headless=False) 11 | page = browser.new_page() 12 | page.on('response', on_response) 13 | page.goto('https://spa6.scrape.center/') 14 | page.wait_for_load_state('networkidle') 15 | browser.close() 16 | -------------------------------------------------------------------------------- /get_all.py: -------------------------------------------------------------------------------- 1 | from playwright.sync_api import sync_playwright 2 | 3 | with sync_playwright() as p: 4 | browser = p.chromium.launch(headless=False) 5 | page = browser.new_page() 6 | page.goto('https://spa6.scrape.center/') 7 | page.wait_for_load_state('networkidle') 8 | elements = page.query_selector_all('a.name') 9 | for element in elements: 10 | print(element.get_attribute('href')) 11 | print(element.text_content()) 12 | browser.close() 13 | -------------------------------------------------------------------------------- /get_attr.py: -------------------------------------------------------------------------------- 1 | from playwright.sync_api import sync_playwright 2 | 3 | with sync_playwright() as p: 4 | browser = p.chromium.launch(headless=False) 5 | page = browser.new_page() 6 | page.goto('https://spa6.scrape.center/') 7 | page.wait_for_load_state('networkidle') 8 | href = page.get_attribute('a.name', 'href') 9 | print(href) 10 | browser.close() 11 | -------------------------------------------------------------------------------- /get_html.py: -------------------------------------------------------------------------------- 1 | from playwright.sync_api import sync_playwright 2 | 3 | with sync_playwright() as p: 4 | browser = p.chromium.launch(headless=False) 5 | page = browser.new_page() 6 | page.goto('https://spa6.scrape.center/') 7 | page.wait_for_load_state('networkidle') 8 | html = page.content() 9 | print(html) 10 | browser.close() 11 | -------------------------------------------------------------------------------- /get_one.py: -------------------------------------------------------------------------------- 1 | from playwright.sync_api import sync_playwright 2 | 3 | with sync_playwright() as p: 4 | browser = p.chromium.launch(headless=False) 5 | page = browser.new_page() 6 | page.goto('https://spa6.scrape.center/') 7 | page.wait_for_load_state('networkidle') 8 | element = page.query_selector('a.name') 9 | print(element.get_attribute('href')) 10 | print(element.text_content()) 11 | browser.close() 12 | -------------------------------------------------------------------------------- /init.py: -------------------------------------------------------------------------------- 1 | from playwright.sync_api import sync_playwright 2 | 3 | with sync_playwright() as p: 4 | for browser_type in [p.chromium, p.firefox, p.webkit]: 5 | browser = browser_type.launch(headless=False) 6 | page = browser.new_page() 7 | page.goto('https://www.baidu.com') 8 | page.screenshot(path=f'screenshot-{browser_type.name}.png') 9 | print(page.title()) 10 | browser.close() 11 | -------------------------------------------------------------------------------- /init2.py: -------------------------------------------------------------------------------- 1 | import asyncio 2 | from playwright.async_api import async_playwright 3 | 4 | 5 | async def main(): 6 | async with async_playwright() as p: 7 | for browser_type in [p.chromium, p.firefox, p.webkit]: 8 | browser = await browser_type.launch(headless=False) 9 | page = await browser.new_page() 10 | await page.goto('https://www.baidu.com') 11 | await page.screenshot(path=f'screenshot-{browser_type.name}.png') 12 | print(await page.title()) 13 | await browser.close() 14 | 15 | asyncio.run(main()) 16 | -------------------------------------------------------------------------------- /init3.py: -------------------------------------------------------------------------------- 1 | from playwright.sync_api import sync_playwright 2 | 3 | playwright = sync_playwright().start() 4 | for browser_type in [playwright.chromium, playwright.firefox, playwright.webkit]: 5 | browser = browser_type.launch(headless=False) 6 | page = browser.new_page() 7 | page.goto('https://www.baidu.com') 8 | page.screenshot(path=f'screenshot-{browser_type.name}.png') 9 | print(page.title()) 10 | browser.close() 11 | playwright.stop() 12 | -------------------------------------------------------------------------------- /location-iphone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Python3WebSpider/PlaywrightTest/14af74340406d44c607b049bd4d49575f1662b0d/location-iphone.png -------------------------------------------------------------------------------- /modify_request.py: -------------------------------------------------------------------------------- 1 | from playwright.sync_api import sync_playwright 2 | import re 3 | import time 4 | 5 | with sync_playwright() as p: 6 | browser = p.chromium.launch(headless=False) 7 | page = browser.new_page() 8 | 9 | def cancel_request(route, request): 10 | route.abort() 11 | 12 | page.route(re.compile(r"(\.png)|(\.jpg)"), cancel_request) 13 | page.goto("https://spa6.scrape.center/") 14 | page.wait_for_load_state('networkidle') 15 | page.screenshot(path='no_picture.png') 16 | time.sleep(10) 17 | browser.close() 18 | -------------------------------------------------------------------------------- /modify_response.py: -------------------------------------------------------------------------------- 1 | from playwright.sync_api import sync_playwright 2 | import time 3 | 4 | with sync_playwright() as p: 5 | browser = p.chromium.launch(headless=False) 6 | page = browser.new_page() 7 | 8 | def modify_response(route, request): 9 | route.fulfill(path="./custom_response.html") 10 | 11 | page.route('/', modify_response) 12 | page.goto("https://spa6.scrape.center/") 13 | time.sleep(10) 14 | browser.close() 15 | -------------------------------------------------------------------------------- /no_picture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Python3WebSpider/PlaywrightTest/14af74340406d44c607b049bd4d49575f1662b0d/no_picture.png -------------------------------------------------------------------------------- /on_load.py: -------------------------------------------------------------------------------- 1 | from playwright.sync_api import sync_playwright 2 | 3 | 4 | def on_response(response): 5 | print(f'Statue {response.status}: {response.url}') 6 | 7 | 8 | with sync_playwright() as p: 9 | browser = p.chromium.launch(headless=False) 10 | page = browser.new_page() 11 | page.on('response', on_response) 12 | page.goto('https://spa6.scrape.center/') 13 | page.wait_for_load_state('networkidle') 14 | browser.close() 15 | -------------------------------------------------------------------------------- /screenshot-chromium.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Python3WebSpider/PlaywrightTest/14af74340406d44c607b049bd4d49575f1662b0d/screenshot-chromium.png -------------------------------------------------------------------------------- /screenshot-firefox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Python3WebSpider/PlaywrightTest/14af74340406d44c607b049bd4d49575f1662b0d/screenshot-firefox.png -------------------------------------------------------------------------------- /screenshot-webkit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Python3WebSpider/PlaywrightTest/14af74340406d44c607b049bd4d49575f1662b0d/screenshot-webkit.png -------------------------------------------------------------------------------- /script.py: -------------------------------------------------------------------------------- 1 | from playwright.sync_api import sync_playwright 2 | 3 | def run(playwright): 4 | browser = playwright.firefox.launch(headless=False) 5 | context = browser.new_context() 6 | 7 | # Open new page 8 | page = context.new_page() 9 | 10 | # Go to https://www.baidu.com/ 11 | page.goto("https://www.baidu.com/") 12 | 13 | # Click input[name="wd"] 14 | page.click("input[name=\"wd\"]") 15 | 16 | # Fill input[name="wd"] 17 | page.fill("input[name=\"wd\"]", "nba") 18 | 19 | # Press Enter 20 | # with page.expect_navigation(url="https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=nba&fenlei=256&rsv_pq=c4e7c93800022149&rsv_t=51eei5XA6At5rtVRipYK2c1guDYFZrhsJewHdsvB6cVWepemT4sW1L7%2B4Io&rqlang=cn&rsv_enter=1&rsv_dl=ib&rsv_sug3=4&rsv_sug1=3&rsv_sug7=100&rsv_sug2=0&rsv_btype=i&inputT=1108&rsv_sug4=2164"): 21 | with page.expect_navigation(): 22 | page.press("input[name=\"wd\"]", "Enter") 23 | 24 | # Close page 25 | page.close() 26 | 27 | # --------------------- 28 | context.close() 29 | browser.close() 30 | 31 | with sync_playwright() as playwright: 32 | run(playwright) -------------------------------------------------------------------------------- /webkit_test.py: -------------------------------------------------------------------------------- 1 | import time 2 | from playwright.sync_api import sync_playwright 3 | 4 | with sync_playwright() as p: 5 | iphone_12_pro_max = p.devices['iPhone 12 Pro Max'] 6 | browser = p.webkit.launch(headless=False) 7 | context = browser.new_context( 8 | **iphone_12_pro_max, 9 | locale='zh-CN', 10 | geolocation={'longitude': 116.39014, 'latitude': 39.913904}, 11 | permissions=['geolocation'] 12 | ) 13 | page = context.new_page() 14 | page.goto('https://amap.com') 15 | page.wait_for_load_state(state='networkidle') 16 | page.screenshot(path='location-iphone.png') 17 | time.sleep(10) 18 | browser.close() 19 | -------------------------------------------------------------------------------- /webkit_test2.py: -------------------------------------------------------------------------------- 1 | import time 2 | from playwright.sync_api import sync_playwright 3 | 4 | with sync_playwright() as p: 5 | iphone_12_pro_max = p.devices['iPhone 12 Pro Max'] 6 | browser = p.webkit.launch(headless=False) 7 | context = browser.new_context( 8 | **iphone_12_pro_max, 9 | locale='zh-CN', 10 | ) 11 | page = context.new_page() 12 | page.goto('https://www.whatismybrowser.com/') 13 | page.wait_for_load_state(state='networkidle') 14 | page.screenshot(path='browser-info.png') 15 | time.sleep(10) 16 | browser.close() 17 | --------------------------------------------------------------------------------