影刀RPA Python playwright浏览器自动化:新一代网页操控利器

影刀RPA Python playwright浏览器自动化:新一代网页操控利器 影刀RPA Python playwright浏览器自动化新一代网页操控利器作者林焱前面讲了Selenium这里介绍一个更强的替代品Playwright。它由微软开发性能和稳定性都比Selenium好一截。如果你的影刀流程需要复杂的浏览器操作Playwright是更好的选择。Playwright比Selenium好在哪速度快不需要WebDriver中间层直接通过CDP协议控制浏览器自动等待点击前自动等待元素可交互不用手动写wait多浏览器支持Chromium、Firefox、WebKit一套代码全兼容自带录屏和Trace流程出了问题可以回放排查更方便网络拦截可以劫持请求和响应不用额外工具在影刀Python代码块中使用Playwright先安装pip install playwright然后安装浏览器python -m playwright install chromium基本模板fromplaywright.sync_apiimportsync_playwrightwithsync_playwright()asp:# 启动浏览器headlessFalse可以看到窗口browserp.chromium.launch(headlessFalse)pagebrowser.new_page()# 访问网页page.goto(https://example.com/login)# 填写表单——Playwright自动等待元素出现page.fill(#username,admin)page.fill(#password,123456)page.click(button[typesubmit])[video(video-5DQodQCc-1783620727223)(type-csdn)(url-https://live.csdn.net/v/embed/526818)(image-https://v-blog.csdnimg.cn/asset/582d14c3bd0451c5399cd990b56e2a0d/cover/Cover0.jpg)(title-拼多多店群自动化报活动上架)]# 等待登录成功page.wait_for_selector(.user-info,timeout10000)# 获取页面内容titlepage.text_content(h1)htmlpage.content()# 截图page.screenshot(pathscreenshot.png,full_pageTrue)browser.close()解决影刀的痛点场景场景1等待复杂的Ajax加载影刀的等待指令只能等固定时间或元素出现。当需要等某个API请求完成时就很麻烦。Playwright一行搞定# 等待特定的API请求完成withpage.expect_response(lambdaresp:/api/datainresp.url):page.click(#load-more)# 此时数据已加载完毕场景2处理下载文件# 自动下载文件不弹对话框withpage.expect_download()asdownload_info:page.click(#download-btn)downloaddownload_info.value download.save_as(fD:/下载/{download.suggested_filename})场景3模拟移动端# 模拟手机浏览器iphonep.devices[iPhone 12]browserp.chromium.launch()pagebrowser.new_page(**iphone)page.goto(https://m.example.com)# 现在你的请求就像是从iPhone发出来的场景4网络拦截——抓AJAX数据# 拦截所有JSON响应提取你需要的数据api_data[]defhandle_response(response):if/api/listinresponse.urlandresponse.status200:api_data.append(response.json())page.on(response,handle_response)page.goto(https://example.com/list)# page加载完毕后api_data里就有了接口返回的数据踩坑实录坑1playwright install下载浏览器很慢Playwright的install命令会从国外CDN下载Chromium约130MB国内网络可能极慢。解决方案是设置国内镜像setPLAYWRIGHT_DOWNLOAD_HOSThttps://npmmirror.com/mirrors/playwright/ python-mplaywrightinstallchromium坑2同步API和异步API混用Playwright有同步sync_api和异步async_api两套API。影刀的Python代码块是同步执行的必须用sync_api。如果你用async_api需要额外的asyncio.run()包装容易出错。坑3浏览器不关闭导致进程残留如果代码中途报错browser.close()没执行到后台会残留chromium进程。用try/finally确保关闭TEMU店群矩阵自动化运营核价报活动browserp.chromium.launch()try:# 你的操作passfinally:browser.close()或者用with语句推荐它会自动清理。坑4headless模式下截图空白headlessTrue时某些页面截图是空白的。可以设置特殊的视口大小解决browserp.chromium.launch(headlessTrue)pagebrowser.new_page(viewport{width:1920,height:1080})![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/d4cd84fcae294290ac102bc96ec63860.png#pic_center)Playwright vs Selenium 怎么选场景推荐简单表单填写和点击Selenium生态更成熟复杂等待和Ajax处理Playwright需要抓取API数据Playwright网络拦截需要多浏览器兼容测试Playwright已有大量Selenium代码Selenium别折腾迁移如果在项目中从零开始我没理由不推荐Playwright。但如果团队已经在用Selenium且跑得很稳定没必要为了换而换。写在最后Playwright是比Selenium更优雅的浏览器自动化方案。影刀搞定常规场景Playwright搞定硬骨头。关键不在于用哪个工具而在于知道什么场景该用哪个。