1.playwright如何接管本地浏览器
(1)首先找到电脑上安装的Chrome浏览器可执行程序的完整路径:
Mac电脑上可执行程序的完整路径为:
/Applications/Google Chrome.app/Contents/MacOS/Google Chrome
windows系统的电脑上查找可执行文件的完整路径:
右键 Chrome 浏览器桌面图标,找到 chrome.exe 的安装路径
(2)将Chrome浏览器可执行程序的完整路径配置到环境变量中,也可以不配置。
(3)假设我们没有配置环境变量,如果配置环境变量直接使用启动本地浏览器命令行即可,以Mac电脑为例,
进入Chrome浏览器可执行程序的完整路径:
cd /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
新建一个空白文件夹,用于保存浏览器数据,我的保存浏览器数据的文件夹目录如下:
/Users/zy/Desktop/work_file/playwright_data
在Mac电脑上的终端或者在pycharm的终端中,windows系统的电脑打开cmd,输入如下的命令行代码启动本地浏览器:
./Google\ Chrome --remote-debugging-port=8899 --incognito --start-maximized --user-data-dir="/Users/zy/Desktop/work_file/playwright_data"
windows电脑输入如下的命令行:
chrome.exe --remote-debugging-port=8899 --user-data-dir="E:\playwright_chrome_data"
(4)百度淘宝,登录淘宝
(5)运行playwright程序,接管上述浏览器,在搜索框中输入python并点击搜索。
--remote-debugging-port | 是指定浏览器运行端口,只要没被占用就行 |
--user-data-dir | 指定运行浏览器的运行数据,新建一个干净目录,不影响系统原来的数据 |
browser = p.chromium. connect_over_cdp(' http://localhost:8899/ ') | 接管本地浏览器 |
page = browser.contexts[0].pages[0] | 接管本地浏览器的当前页面 |
2.程序代码
通过命令行启动本地浏览器并制定托管端口为8899。
命令启动的浏览器如下,百度搜索淘宝并手动档完成淘宝登录。
淘宝登录完毕后,执行如下的代码,接管本地浏览器,搜素python相关信息,并打印输出相应店铺的名称。
'''
(1)启用本地的浏览器,进入淘宝并完成登录;
cd /Applications/Google Chrome.app/Contents/MacOS
./Google\ Chrome --remote-debugging-port=8899 --incognito --start-maximized --user-data-dir="/Users/zy/Desktop/work_file/playwright_data"
(2)使用playwright接管本地浏览器,在搜索框中搜索python打开相应的商品页面;
(3)爬取相应的店铺信息;
'''
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.connect_over_cdp('http://localhost:8899/')
page = browser.contexts[0].pages[0] # 一个上下文管理器上有两个page页面
page.locator('xpath=//*[@id="q"]').fill('python')
page.locator('xpath=//*[@id="button"]').click()
page.wait_for_timeout(1000)
names = page.locator('xpath=//a[@class="ShopInfo--shopName--rg6mGmy"]').all()
for name in names:
print(name.inner_text())
page.close()
browser.close()
输出的结果如下: