Python 爬虫杂记 - Chrome Headless

Python 爬虫杂记 - Chrome Headless,第1张

概述Chrome Headless使用 测试 Chrome 版本: 62.0.3202.89(正式版本)(64 位) Python环境:python2.7 注: Headless模式需要59版本及以上! Chrome的安装与配置不在此赘述, 不过需要注意的是: 版本号与驱动的映射关系! 版本号与驱动的映射关系!! 版本号与驱动的映射关系!!! Chrome与Chromedriver的映射关系表:   Chrome headless使用
测试 Chrome 版本: 62.0.3202.89(正式版本)(64 位) Python环境:python2.7 注: headless模式需要59版本及以上! 

Chrome的安装与配置不在此赘述, 不过需要注意的是:

版本号与驱动的映射关系! 版本号与驱动的映射关系!! 版本号与驱动的映射关系!!!

Chrome与Chromedriver的映射关系表:

 


Chromedriver下载链接:http://chromedriver.storage.googleapis.com/index.html

 

1. 使用headless模式
from selenium import webdriver from selenium.webdriver.Chrome.options import Options Chrome_options = Options() # 无头模式启动 Chrome_options.add_argument(‘--headless‘) # 谷歌文档提到需要加上这个属性来规避BUG Chrome_options.add_argument(‘--disable-gpu‘) # 初始化实例 driver= webdriver.Chrome(Chrome_options=Chrome_options) # 请求百度 driver.get("http://www.baIDu.com") 
2. 禁用图片 2.1 网上大多数的资料给的是以下这种方式, 但是在headless的模式下并没有生效, 在非headless的模式下是生效的。
prefs = {"profile.managed_default_content_settings.images": 2}Chrome_options.add_experimental_option("prefs",prefs)
2.2 以下的这种方式在headless的模式下是生效的, 非headless模式下也是生效的。
Chrome_options.add_argument(‘blink-settings=imagesEnabled=false‘)
3. 添加代理
Chrome_options.add_argument("--proxy-server=http://" + ip:port)
4. 修改User-Agent
Chrome headless模式为什么要修改User-Agent,来看一下同一个浏览器不同模式下的User-Agent:"User-Agent":"Mozilla/5.0 (X11; linux x86_64) AppleWebKit/537.36 (KHTML,like Gecko) headlessChrome/62.0.3202.89 Safari/537.36""User-Agent":"Mozilla/5.0 (X11; linux x86_64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/62.0.3202.89 Safari/537.36"# 修改User-AgentChrome_options.add_argument(‘user-agent= ‘你想修改成的User-Agent‘)
5. 打开新的标签页
#打开空白标签页的方式有很多, 在此只演示一种Js=‘window.open("https://www.jianshu.com/p/4fef4142b33f");‘driver.execute_script(Js) # 通过打开新的标签页, 可以节省浏览器打开的时间,减少资源的浪费。
6. 关闭新打开的标签页
# 分两步走# 1.获取标签页的句柄handlesList = driver.window_handles  # 返回一个浏览器中所有标签的句柄列表, 顺序为打开窗口的顺序# 2. 切换窗口, 关闭标签driver.switch_to.window(handlesList[0]) # 切换到百度标签driver.close()    # 关闭标签,这里必须用 driver.close() ,用driver.quit()会导致浏览器关闭
7. driver使用完之后切记要driver.quit(), 不然或导致内存爆满 8. 其他:

 

 

切换标签的时候,我之前用的方法会出现这种状况, 原因是该方法不支持了:

 

 

不支持的不只是这一种, 还有如下:

driver.switch_to_active_element() ==> driver.switch_to.active_element() 定位到当前聚焦的元素上 driver.switch_to_alert() ==> driver.switch_to.alert() 切换到alertd窗 driver.switch_to_default_content() ==> driver.switch_to.default_content() 切换到最上层页面 driver.switch_to_frame(frame_reference) ==> driver.switch_to.frame(frame_reference) 通过ID、name、element(定位的某个元素)、索引来切换到某个frame driver.switch_to_window() ==> driver.switch_to.window() 切换到指定的标签页 driver.switch_to.parent_frame() switch_to中独有,可以切换到上一层的frame,对于层层嵌套的frame很有用 注: 用pycharm编程的时候还是提示switch_to_window, 但此方法已经不能用了!! 
本人水平有限, 如有错误欢迎提出指正!如有参考, 请注明出处!!禁止抄袭,遇抄必肛!!! 总结

以上是内存溢出为你收集整理的Python 爬虫杂记 - Chrome Headless全部内容,希望文章能够帮你解决Python 爬虫杂记 - Chrome Headless所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1191467.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存