ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

playwright--自动化(三): 跳过检测 使用正常谷歌 指定用户数据 下载文件

2022-01-04 16:04:13  阅读:283  来源: 互联网

标签:__ playwright -- download 跳过 page 下载 wait


首先上一个被拷贝的惨不忍睹 上一个是滑块验证[https://www.cnblogs.com/carl-/p/15761861.html]

还是前两天做一个商城后台爬虫,限制用户缓存,不能用谷歌开发版本,同时需要下载文件。

话不多说上代码[https://www.cnblogs.com/carl-/p/15762714.html]

import getpass
from playwright.sync_api import sync_playwright
# 不出意外这个可以获取到你google的本地缓存文件
__USER_DATE_DIR_PATH__ = f"C:\\Users\\{getpass.getuser()}\\AppData\Local\Google\Chrome\\User Data"

playwright = sync_playwright().start()
browser = playwright.chromium.launch_persistent_context(
                    # 指定本机用户缓存地址
                    user_data_dir=__USER_DATE_DIR_PATH__,
                    # 指定本机google客户端exe的路径
                    executable_path=__EXECUTABLE_PATH__,
                    # 要想通过这个下载文件这个必然要开  默认是False
                    accept_downloads=True,
                    # 设置不是无头模式
                    headless=False,
                    bypass_csp=True,
                    slow_mo=10,
                    #跳过检测
                    args=['--disable-blink-features=AutomationControlled']
                )

注意用这个方法启动的浏览器会自带一个页面存在,当然你还是可以重新再起一个

# 打开新页
page = browser.new_page()
# 访问谷歌首页
page.goto('https://www.google.com',wait_until='networkidle',timeout=90000)
wait_until='networkidle' 意思是 跳转过后再一定时间内没有网络请求链接
timeout 很好理解 超时时间90秒

js注入(用途的话是选择器选择元素用的,具体的js 你们自己写)

# 算是获得句柄吧
window_handle = page.evaluate_handle("window")
# 选择元素
window_handle.evaluate("document.querySelectorAll('#drrReportRangeTypeRadioMonthly')[0].checked=true")
# 自带select选择 data自行补充
drrMonthlySelect = page.wait_for_selector('//select[@id="drrMonthlySelect"]')
drrMonthlySelect.select_option(date)

接下来是下载操作

# 打开下载器
with page.expect_download() as download_info:
  #找到你要下载的东西,找到点击的元素,点击
  page.wait_for_selector('//a[@id="sspa-reports:report-settings-page:-download-button"]').click()
# 下载的东西
download = download_info.value
# 下载的路径
download.path()
# 下载的文件名
download.suggested_filename
# 关闭页面
page.close()
# 关闭浏览器
browser.stop()

剩下的操作 你想干啥干啥

# 补充几个
# 点击
page.click('//input[@id="signInSubmit"]')
# 等待完成
self.page.wait_for_load_state("domcontentloaded")
# 输入
page.fill('//input[@id="ap_email"]', user_str)
# 查找元素
page.wait_for_selector('//select[@id="drrMonthlySelect"]')

标签:__,playwright,--,download,跳过,page,下载,wait
来源: https://www.cnblogs.com/carl-/p/15762714.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有