Python库积累之Selenium(二)-Seleniun中的一些问题与解决方法
常见问题与解决:
1.selenium中出现提示’Your connection is not private’(你的连接不是私密连接)
在Chrome中需要添加忽略认证错误:
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument('ignore-certificate-errors')
driver = webdriver.Chrome(chrome_options=options)
driver.get('https://cacert.org/')
driver.close()
在 Firefox中设置accept_untrusted_certs为True:
from selenium import webdriver
profile = webdriver.FirefoxProfile()
profile.accept_untrusted_certs = True
driver = webdriver.Firefox(firefox_profile=profile)
driver.get('https://cacert.org/')
driver.close()
原回答:https://stackoverflow.com/questions/24507078/how-to-deal-with-certificates-using-selenium
2.鼠标悬停与选择下拉
下拉列表的时候,存在两种情况。第一种是有select标签的,这种情况下可以通过from selenium.webdriver.support.ui import Select方式实现

具体selenium代码为:
'''
第一种情形:可以通过 from selenium.webdriver.support.ui import Select
'''
from selenium import webdriver
from selenium.webdriver.support.ui import Select
driver = webdriver.Chrome()
driver.get('https://www.17sucai.com/pins/demo-show?id=5926')
# 切换ifrane
driver.switch_to_frame(driver.find_element_by_id('iframe'))
# 找到下拉框
selectTag = Select(driver.find_element_by_name('country-wrap')) # select标签
# 获得选择项
# 1.根据值来选择
selectTag.select_by_value('CA')
# 2.根据索引来选择
# selectTag.select_by_index(3)
但也存在没有select标签的下拉列表,这时候就需要我们手动链接到该位置。如图片情形所示,就是a标签,不是select标签,无法通过from selenium.webdriver.support.ui import Select方式实现

'''
第二种情形:手动点击
'''
from selenium import webdriver
from selenium.webdriver.support.ui import Select
driver = webdriver.Chrome()
driver.get('https://www.17sucai.com/pins/demo-show?id=5926')
# 切换ifrane
driver.switch_to_frame(driver.find_element_by_id('iframe'))
# 找到下拉框
selectTag = driver.find_element_by_xpath('//*[@id="dk_container_country-nofake"]').click() # 点击下拉列表位置
# 获得下拉选择项
driver.find_element_by_xpath('//*[@id="dk_container_country-nofake"]/div/ul/li[1]/a').click()
原文:https://blog.csdn.net/Claire_chen_jia/article/details/106523131
3.下载文件中文乱码/将浏览器设置为中文/改变编码
如果下载中文文件后文件名为乱码,则需要配置对应浏览器设置
options.add_argument('lang=zh_CN.UTF-8')
selenium+python配置chrome浏览器详解https://blog.csdn.net/zwq912318834/article/details/78933910
4.不显示UI调用浏览器
在不打开UI界面的情况下使用 Chrome 浏览器。用法:
option=webdriver.ChromeOptions()
option.add_argument('headless')
driver=webdriver.Chrome(chrome_options=option)
5.直接用cookie登录方法
先手动获取网页的cookie,将其序列化并存储在本地
使用到一个chrome插件EditThisCookiehttp://www.editthiscookie.com/
它有个导出功能,当你登录完后点击导出便会得到一个list格式的字符串,稍加修改就可以作为python的list来导入cookie了
#导入cookie
for item in cookies:
driver.add_cookie(item)
https://www.jianshu.com/p/773c58406bdb
6.selenium下载文件到指定的文件夹
在爬虫的时候会遇到下载文件的情况,这时候如果用Chrome浏览器点击下载,文件会自动存放到默认文件夹,一般是 我的电脑>下载 这个路径,如果我们想下载到指定文件夹,有没有办法呢?,可以试试下面的方法,在启动driver的时候就指定一个默认下载路径
from selenium import webdriver
options = webdriver.ChromeOptions()
out_path = r'D:\Projects\Spiders' # 是你想指定的路径
prefs = {'profile.default_content_settings.popups': 0, 'download.default_directory': out_path}
options.add_experimental_option('prefs', prefs)
browser = webdriver.Chrome(executable_path=r'D:\Repo 3\chromedriver.exe', chrome_options=options)
7.判断文件是否下载完成
https://stackoverflow.com/questions/34338897/python-selenium-find-out-when-a-download-has-completed
↓↓↓欢迎关注我的公众号,在这里有数据相关技术经验的优质原创文章↓↓↓

Python库积累之Selenium(二)-Seleniun中的一些问题与解决方法的更多相关文章
- js中style.display=""无效的解决方法
本文实例讲述了js中style.display=""无效的解决方法.分享给大家供大家参考.具体解决方法如下: 一.问题描述: 在js中我们有时想动态的控制一个div显示或隐藏或更多 ...
- java开发中遇到的问题及解决方法(持续更新)
摘自 http://blog.csdn.net/pony12/article/details/38456261 java开发中遇到的问题及解决方法(持续更新) 工作中,以C/C++开发为主,难免与其他 ...
- 国内不fq安装K8S四: 安装过程中遇到的问题和解决方法
目录 4 安装过程中遇到的问题和解决方法 4.1 常见问题 4.2 常用的操作命令 4.3 比较好的博客 国内不fq安装K8S一: 安装docker 国内不fq安装K8S二: 安装kubernet 国 ...
- 将html代码部署到阿里云服务器,并进行域名解析,以及在部署过程中遇到的问题和解决方法
本博客主要是说一下,,如何将html代码部署到阿里云服务器,并进行域名解析,以及在部署过程中遇到的问题和解决方法. 1.先在阿里云上购买一台阿里云服务器(ECS云服务器): 2.远程连接上该服务器,在 ...
- VS2012中丢失ArcGIS模板的解决方法
VS2012中丢失ArcGIS模板的解决方法 由于ArcGIS10.0(for .NET)默认是用VS2010作为开发工具的,所以在先安装VS2012后装ArcGIS10.0 桌面版及ArcObjec ...
- SpringBoot拦截器中无法注入bean的解决方法
SpringBoot拦截器中无法注入bean的解决方法 在使用springboot的拦截器时,有时候希望在拦截器中注入bean方便使用 但是如果直接注入会发现无法注入而报空指针异常 解决方法: 在注册 ...
- asp.net url址址中中文汉字参数传递乱码解决方法
中文乱码是网站开发中会常碰到的问题,今天我们来讲一下关于url址址中中文汉字参数传递乱码解决方法,有需要的朋友可以参考下.在cs文件里传参的时候用UrlEncode: Response.Redirec ...
- @NamedEntityGraphs --JPA按实体类对象参数中的字段排序问题得解决方法
JPA按实体类对象参数中的字段排序问题得解决方法@Entity @Table(name="complaints") @NamedEntityGraphs({ @NamedEntit ...
- 关于验证码在IE中不刷新的快速解决方法
今天在做验证码的时候发现在IE中,验证码不会刷新,而谷歌等其他浏览器没有问题,所以我想到应该是缓存问题,因为IE默认的设置是如果访问地址没变化就不会去获取而是加载缓存中的内容 所以解决方案就是在验证码 ...
- 在启动php时,无法启动此程序,由于计算机中丢失MSVCR110.dll的解决方法
在启动php时,运行RunHiddenconsole.exe php-cgi.exe -b 127.0.0.1:9000 -c时,出现错误:无法启动此程序,由于计算机中丢失MSVCR110.dll 方 ...
随机推荐
- HashMap 的 put 方法源码分析(JDK 1.8)
一.HashMap 的 put 方法源码分析(JDK 1.8) 以下是 HashMap 的 put 方法的源码(JDK 1.8): hash(key) 方法 hash(key) 方法用于计算键的哈希值 ...
- classpath类路径
一.classpath类路径,包含java包下和resource下
- 🔥Elasticsearch(ES)(版本7.x)数据更新后刷新策略RefreshPolicy
简介 在Elasticsearch 7.x版本中,当更新数据时(例如索引.更新或删除文档),这些更改并不会立即对搜索可见.为了让这些更改能够被搜索到,需要了解和选择合适的刷新策略(Refresh Po ...
- python爬虫(BeautifulSoup)爬取B站视频字幕
比如"https://www.bilibili.com/video/BV1zU4y1p7L3"这个视频,有1.2万条弹幕 首先,B站视频的弹幕是有专门的接口传递数据的:http:/ ...
- journalctl -u docker 查看日志
转载注明出处: 1. 查看 Docker 服务的最新日志(实时滚动) sudo journalctl -u docker -f -f 参数表示 跟随(follow),会持续输出最新日志(类似 tail ...
- Vitepress 建站资源汇总
整理下使用 Vitepress 搭建博客过程中使用过的一些资源和方案 主要参考站点 Vitepress 官方文档 VitePress快速上手中文教程,这个站点扩展很全,包括静态部署选择,样式美化,第三 ...
- Windows 实用工具(新机、全新系统、重装系统必备)
Windows 实用工具 https://www.lanzoub.com/b0ziu7owh 密码:akoc HEU_KMS_Activator Windows 激活工具. 下载链接: Github: ...
- 【笔记】Excel 2021|VBA删除数组中的一个元素、循环时删除一行、选择一列删除指定一行
主要问题是循环的时候删除一行比较麻烦,因为删除了一行后,循环仍然直接访问后一行,会导致一定的异常. 文章目录 选择一列,删除指定一行 删除数组中的一个元素 方法1:利用动态数组,在循环中条件判断删除 ...
- 如何在 Linux 上检查开放的端口并关闭不需要的端口
检查服务器开放端口并关闭不必要的端口是网络安全管理中的关键环节,开放端口如同服务器的"窗口",若其中存在未被利用或未受保护的端口,就如同为潜在的攻击者敞开了大门,他们可能会利用这些 ...
- awk截取日志
Posted on 2019-04-02 09:35 SZ_文彬 阅读(0) 评论(0) 编辑 收藏 好久没有截取nginx/haproxy 中 的日志了,竟有点不熟悉了. 记录一下,以免以后忘记. ...