当前位置:   article > 正文

python selenium playwright库使用教程 破解网页防止开发者模式 截取数据请求_playwright 禁止image

playwright 禁止image

安装chromedriver

下载

chromedriver的版本一定要与Chrome的版本一致,不然就不起作用。

有两个下载地址:

1、http://chromedriver.storage.googleapis.com/index.html

2、CNPM Binaries Mirror

当然,你首先需要查看你的Chrome版本,在浏览器中输入chrome://version/

 放chromedriver在chrome安装目录

 默认目录一般为:C:\Program Files\Google\Chrome\Application

获取网页源码

  1. from selenium import webdriver
  2. from selenium.webdriver.common.by import By
  3. browser = webdriver.Chrome()
  4. browser.get(a[0])#填url
  5. time.sleep(3)
  6. b=browser.page_source
  7. print(b)

常用配置参数:

  1. # 添加UA
  2. options.add_argument('user-agent="MQQBrowser/26 Mozilla/5.0 (Linux; U; Android 2.3.7; zh-cn; MB200 Build/GRJ22; CyanogenMod-7) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"')
  3. # 指定浏览器分辨率
  4. options.add_argument('window-size=1920x3000')
  5. # 谷歌文档提到需要加上这个属性来规避bug
  6. chrome_options.add_argument('--disable-gpu')
  7. # 隐藏滚动条, 应对一些特殊页面
  8. options.add_argument('--hide-scrollbars')
  9. # 不加载图片, 提升速度
  10. options.add_argument('blink-settings=imagesEnabled=false')
  11. # 浏览器不提供可视化页面. linux下如果系统不支持可视化不加这条会启动失败
  12. options.add_argument('--headless')
  13. # 以最高权限运行
  14. options.add_argument('--no-sandbox')
  15. # 手动指定使用的浏览器位置
  16. options.binary_location = r"C:Program Files (x86)GoogleChromeApplicationchrome.exe"
  17. #添加crx插件
  18. option.add_extension('d:crxAdBlock_v2.17.crx')
  19. # 禁用JavaScript
  20. option.add_argument("--disable-javascript")
  21. # 设置开发者模式启动,该模式下webdriver属性为正常值
  22. options.add_experimental_option('excludeSwitches', ['enable-automation'])
  23. # 禁用浏览器弹窗
  24. prefs = {
  25. 'profile.default_content_setting_values' : {
  26. 'notifications' : 2
  27. }
  28. }
  29. options.add_experimental_option('prefs',prefs)
  30. # 添加代理 ip
  31. options.add_argument("--proxy-server=http://XXXXX.com:80")
  32. driver = webdriver.Chrome(chrome_options=chrome_options)

XPATH获取元素

  1. content=browser.find_element(value='//*[@id="img-content"]',by=By.XPATH)
  2. print(content.text)

隐藏chrome

  1. chrome_opts = webdriver.ChromeOptions()
  2. chrome_opts.add_argument("--headless")
  3. browser = webdriver.Chrome(options=chrome_opts)

最小化浏览器窗口

  1. browser = webdriver.Chrome(options=chrome_opts)
  2. browser.minimize_window()

点击元素 写入元素 生成随机字符串

  1. ming=''.join(random.choice(string.ascii_letters+ string.digits) for _ in range(12))
  2. print(ming)
  3. browser.find_element(value='//*[@id="name"]', by=By.XPATH).send_keys(ming)
  4. browser.find_element(value='//*[@id="email"]', by=By.XPATH).send_keys(ming+'@qq.com')
  5. browser.find_element(value='//*[@id="imtype"]', by=By.XPATH).click()
  6. time.sleep(1)
  7. browser.find_element(value='/html/body/div[1]/div/section/div/div[6]/div/div/ul/li[2]/a', by=By.XPATH).click()

点击第一个谷歌搜索结果

browser.find_element(value='//*[@id="rso"]/div[1]/div/div[1]/div/div/div[1]/div/a/h3', by=By.XPATH).click()

Python往文件追加内容

f = open('test.txt', 'a')
f.write('Hello Everyone\n')
f.close()

Selenium设置页面超时时间-快速终止页面加载

当使用Selenium爬取一些页面时,有些页面加载速度特别慢,而我们又不需要等待页面完全加载完毕。
此时可以通过driver.set_page_load_timeout()来设置页面超时时间。
捕获异常,并执行js脚本window.stop()即可实现,代码如下。

  1. from selenium import webdriver
  2. driver = webdriver.Chrome()
  3. driver.set_page_load_timeout(3)
  4. try:
  5. driver.get('https://hk.louisvuitton.com/zht-hk/homepage')
  6. print('finish load ....')
  7. except Exception:
  8. driver.execute_script('window.stop()')
  9. print(driver.title)
  10. finally:
  11. driver.quit()

pj网页防止开发者模式

使用 CDP(Chrome Devtools-Protocol),您可以在 JS 文件(检测器)加载框架之前运行代码。因此,使用这些代码删除“webdriver True”属性:

  1. Object.defineProperty(navigator, 'webdriver', {
  2. get: () => undefined
  3. })

关键代码:

  1. from selenium.webdriver import Chrome
  2. driver = Chrome('D://chromedriver.exe')
  3. driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
  4. "source": """
  5. Object.defineProperty(navigator, 'webdriver', {
  6. get: () => undefined
  7. })
  8. """
  9. })
  10. driver.get('http://pythonlearner.com')

但是,如果您现在将 Chrome 升级到 88。上面提到的方法将毫无用处。幸运的是,我们仍然有一个解决方案(添加此代码)

chrome_options.add_argument("--disable-blink-features=AutomationControlled")

截取数据请求

  1. from seleniumwire import webdriver
  2. browser = webdriver.Chrome("chromedriver.exe")
  3. browser.request_interceptor = interceptor_request
  4. browser.response_interceptor = interceptor_response
  5. browser.get("http://localhost:8088/inner/t4")
  6. for request in browser.requests:
  7. print(request.url)
  8. print(request.response.body)

Selenium-处理滑块验证码-openCV识别

opencv基础操作

  1. #opencv基础操作
  2. import cv2
  3. #图像的基本操作
  4. #图像的读取
  5. #img cv2.imread(''")
  6. #查看对应的像素
  7. #img[120,120]
  8. img[120,120]=[255,255,0]
  9. #修改图像尺寸
  10. resized=cv2.resize(img,(960,540))
  11. #修改窗口尺寸
  12. cv2.namedWindow("img",0)
  13. cv2.resizeWindow("img",640,480)
  14. #图像展示
  15. #cv2.imshow('img',img)
  16. #图像写入
  17. cv2.imwrite('',img)
  18. cv2.imencode('.jpg',img)[1].tofile('')
  19. #等待用户按下任意键的时间
  20. cv2.waitKey()#括号里的是时间,单位是ms
  21. #销毁窗口
  22. cv2.destroyAlLWindows()#销毁当前所有正在显示的窗口
#1、隐藏Chrome 正受到自动测试软件的控制
chrome_options = webdriver.ChromeOptions()
chrome_options.add_experimental_option('excludeSwitches', ['enable-automation'])
browser = webdriver.Chrome(options=chrome_options)

F12进入调试界面总是停留在Paused in debugger解决办法

有时候我们在某个界面点击F12后,页面会出现下面这样的按钮,导致无法对界面进行实时操作:
在这里插入图片描述
我使用的是edge浏览器,解决办法如下:
在这里插入图片描述
点击上面的禁止按钮,再点击一下页面上下面的按钮就可以了!
在这里插入图片描述

Playwright 为现代 web 应用提供了跨浏览器、快速且可靠的端到端的测试能力。 | Playwright 中文文档 | Playwright 中文网

参考:selenium 安装与 chromedriver安装 - Rogn - 博客园 (cnblogs.com)

python 用seleniumwire模块获取网站登陆后的请求头token字符串数据_井底 之鱼的博客-CSDN博客

【浅记】使用seleniumwire滑动极兔滑块_seleniumwire拖动滑动_Docda的博客-CSDN博客

https://www.cnblogs.com/qlqwjy/p/16519286.html

python selenium 保存网页缓存,保持登录 https://www.cnblogs.com/royfans/p/16714805.html

 

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号