摘要:使用在中进行了一项使用浏览器的工作在此记录下遇到的问题以及解决方法入门参考中如何安装浏览器以及参考启动浏览器时常用的属性指定浏览器分辨率谷歌文档提到需要加上这个属性来规避隐藏滚动条应对一些特殊页面不加载图片提升速度
使用python3.6在Ubuntu中进行了一项使用Chrome headless浏览器的工作, 在此记录下遇到的问题以及解决方法.入门?
参考 unning-selenium-with-headless-chrome
Ubuntu中如何安装chrome浏览器, 以及chromedriver?参考 Installing ChromeDriver on Ubuntu
selenium启动浏览器时常用的属性from selenium.webdriver.chrome.options import Options chrome_options = Options() chrome_options.add_argument("window-size=1920x3000") #指定浏览器分辨率 chrome_options.add_argument("--disable-gpu") #谷歌文档提到需要加上这个属性来规避bug chrome_options.add_argument("--hide-scrollbars") #隐藏滚动条, 应对一些特殊页面 chrome_options.add_argument("blink-settings=imagesEnabled=false") #不加载图片, 提升速度 chrome_options.add_argument("--headless") #浏览器不提供可视化页面. linux下如果系统不支持可视化不加这条会启动失败 chrome_options.binary_location = r"/Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary" #手动指定使用的浏览器位置selenium如何连接到已经开启的浏览器?
需要在打开浏览器后, 获取浏览器的command_executor url, 以及session_id
opener.command_executor._url, opener.session_id #opener为webdriver对象
之后通过remote方式链接
from selenium import webdriver opener = webdriver.Remote(command_executor=_url,desired_capabilities={}) #_url为上面的_url opener.close() #这时会打开一个全新的浏览器对象, 先把新的关掉 opener.session_id = session_id #session_id为上面的session_id
之后对opener的任何操作都会反映在之前的浏览器上.
selenium 的 desired_capabilities 如何传递--headless这样的浏览器参数from selenium.webdriver.common.desired_capabilities import DesiredCapabilities capabilities = DesiredCapabilities.CHROME capabilities.setdefault("chromeOptions", {"args":["--headless", "--disable-gpu"]})selenium 使用 crontab等环境启动时提示chromedriver not in PATH
初始化的时候, 传入chromedriver绝对路径
opener = webdriver.Chrome(r"/usr/local/bin/chromedriver", chrome_options=chrome_options)selenium使用cookies
获得cookies
opener.get_cookies()
写入cookies
opener.add_cookie(cookie) #需要先访问该网站产生cookies后再进行覆写
opener.implicitly_wait(30) #30是最长等待时间
selenium 打开新标签页偏向使用js函数来执行
opener.execute_script("""window.open("http://baidu.com","_blank");""")selenium 获得页面的网络请求信息
有些时候页面在你点击后会异步进行请求, 完成一些操作, 这时可能就会生成输出数据的url, 只要抓到这个url就可以跳过token验证等安全监测, 直接获得数据.
script = "var performance = window.performance || window.mozPerformance || window.msPerformance || window.webkitPerformance || {}; var network = performance.getEntries() || {}; return network;" performances = opener.execute_script(script)
script里是js代码, 一般用来进行性能检查, 网络请求状况, 使用selenium执行这段js就可以获得所有的请求信息.
おわり.
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/41342.html
摘要:而在不久前宣布支持模式而后跟随的新闻再次勾起我无尽的回忆。那么我们就来谈谈在和浏览器不原生支持模式下如何使用来实现模式进行动态数据的抓取。比较常见的例子在中进行转发。下面我们进行测试发现其可以正常的运行。 原文地址: http://52sox.com/python-use-h... 在Python中进行浏览器测试时,一般我们会选择selenium这样的库来简化我们工作量。而有些时候,为...
摘要:了解模式指的是不需要用户界面的浏览器,这种浏览器在自动化测试和爬虫领域有着广泛的应用。实践使用浏览器的模式进行自动化测试,你需要先满足以下前提运行环境或者或者最新版已加入万事俱备,废话不多说我们直接上演示代码。 了解HEADLESS模式 HEADLESS BROWSER 指的是不需要用户界面的浏览器,这种浏览器在自动化测试和爬虫领域有着广泛的应用。 例如你想在网页上运行一些测试,从网页...
摘要:通常的解决办法是通过抓包,然后查看信息,接着捕获返回的消息。为了减少因为安装环境所带来的烦恼。代理因为我们已经用替换了。我们需要直接用来处理代理问题。根据上面这段代码,我们也不难猜出解决代理的方法了。 上周说到scrapy的基本入门。这周来写写其中遇到的代理和js渲染的坑。 js渲染 js是爬虫中毕竟麻烦处理的一块。通常的解决办法是通过抓包,然后查看request信息,接着捕获ajax...
注:文章聚合了现在 headless chrome 介绍和使用方式 包含了三个部分 chrome 在 mac 上的安装和简单使用(来自官方) 利用 selenium 的 webdrive 驱动 headless chrome(自己添加) 利用Xvfb方式实现伪 headless chrome 概念 Headless模式解决了什么问题: 自动化工具例如 selenium 利用有头浏览器进行测试...
摘要:对应的的放置目录打开开始登录输入框你的账号你的密码登录确认睡眠秒截图验证码写上你自己的图片地址请输入看到的验证码截图查看步骤写上你自己的图片地址输入任意值继续登录之后跳转跳转开始动态令牌请输入动态 # -*- coding: utf-8 -*- import sys reload(sys) sys.setdefaultencoding(utf-8) import os from ...
阅读 1294·2021-10-08 10:04
阅读 1921·2021-09-04 16:40
阅读 2535·2019-08-30 13:21
阅读 2279·2019-08-29 15:10
阅读 2847·2019-08-29 12:35
阅读 1188·2019-08-26 17:41
阅读 3062·2019-08-26 17:03
阅读 1135·2019-08-26 12:01