1.please use find_element instead find_element_by_XXX

这年头人不停内卷,连selenium库也卷起来了

就像这样给你一条杠杠

然后告诉你已经过时了

然后你就得这么用

from selenium.webdriver.common.by import Bydriver.find_element(By.元素名称(大写), '元素内容')

2.模拟登录过滑块时出现,一直被要求重新刷新

像这样的

代码如下

from selenium import webdriver
from selenium.webdriver.chrome.service import Servicesever = Service('./chromedriver_win32/chromedriver.exe')options = webdriver.ChromeOptions()options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64)\AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36")#即告诉服务器,我们不是非爬虫driver = webdriver.Chrome(service=sever, options=options)url = 'https://www.aliexpress.com/?spm=a2g0o.productlist.1000002.1.51c830430FR7bn'driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {"source": """Object.defineProperty(navigator, 'webdriver', {get: () => undefined})"""
})#具体上就是防止服务器查出我们是webdriverdriver.get(url)
execute_cdp_cmd(self, cmd, cmd_args)用来执行Chrome开发这个工具命令。
cdp即Chrome DevTools Protocal, Chrome开发者工具协议,API文档

至于为何这么写我也不是很清楚,请自行研究

3.过验证码时找不到元素

就像这样的滑块

欸嘿,机智的我刚一遇到这问题就想到了度娘,然后看见一个大爷说要转到frame

这是那大爷的代码

iframe = driver.find_element_by_xpath('//iframe')    # 找到“嵌套”的iframe
driver.switch_to.frame(iframe)     # 切换到iframe

然后,想也不想就直接用了

然后我就麻了,一直找不到元素

如果你跟我一样,直接用的话,就可能无限看到这报错

或这样

不过大爷的思路没问题, 找到“嵌套”的iframe

不过我们需要找到对应网页的iframe

操作如下

1.检查当前网页

选中出现验证码的位置

2.往前翻 找到 '<iframe ' 字段 找到 id 字段 
3.写代码 然后就是By.ID

啊哈哈哈,后面仔细看了下,大爷写的是By.XPATH,我给写成了By.CLASS_NAME

尴尬,尴尬,属实尴尬,大爷的代码没任何毛病,完全能用

我的就算是另一种方法,也能用

time.sleep(5)#这给了个直接等待5秒,是为了等那个验证条出来
driver.find_element_by_id('baxia-dialog-content')
iframe = driver.find_element(By.ID, 'baxia-dialog-content')#我写的# iframe = driver.find_element(By.XPATH, '//iframe')#大爷写的,都能用哈

然后关键就来了,你得将driver 切换到iframe ,否则还是找不到滑块

4.找不到滑块问题

按这个来操作基本就行了

from selenium.webdriver import ActionChains #导入这么个库time.sleep(3)#停一下,给个时间去反应iframe = driver.find_element(By.ID, 'baxia-dialog-content')  # 找到“嵌套”的iframedriver.switch_to.frame(iframe)  # 切换到iframetime.sleep(3)#停一下,给个时间去反应button = driver.find_element(By.ID, 'nc_1_n1z') #找到滑块ActionChains(driver).click_and_hold(button).perform() #点他并保持着ActionChains(driver).move_by_offset(298, 0).perform()
#滑动到啥位置,move_by_offset(298, 0)参数是坐标(X,Y)time.sleep(1)

如果没得任何反应,请自己微调,或者手动滑动滑条,欸嘿嘿嘿

5.各种稀奇古怪的配置(直接看吧)

直接上代码

   s=selenium.webdriver.chrome.service.Service(r".\chromedriver_win32\chromedriver.exe")
#告诉python你的chromedriver的位置option = webdriver.ChromeOptions()#创建设置项option.add_experimental_option('excludeSwitches', ['enable-automation'])#忘了option.add_argument('--disable-blink-features=AutomationControlled')#忘了option.add_argument("--no-sandbox")#忘了option.add_experimental_option('useAutomationExtension', False)#忘了option.add_argument('-kiosk')#忘了option.add_argument('--disable-gpu')#防止浏览器本身的某些出错,具体自己查查看option.add_argument('--headless')#无头浏览option.add_argument('--start-maximized')#全屏#browser_locale = 'fr'#option.add_argument("--lang={}".format(browser_locale))#我自己都没搞懂,反正也没用到option.add_argument('blink-settings=imagesEnabled=false')#无图浏览option.add_argument("--window-size=1920,1080")#设置浏览器窗口大小option.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36")#表明来源option.add_argument(r'user-data-dir='
'C:\ProgramFiles\Google\Chrome\Application\95.0.4638.69\WidevineCdm\_platform_specific'
)
#配置本地配置
#user-data-dir=这里填写你自己的浏览器配置地址driver = webdriver.Chrome(service=s, options=option)driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {"source": """Object.defineProperty(navigator, 'webdriver', {get: () => undefined})"""})#防止被检测

额外补充raise WebDriverException(
selenium.common.exceptions.WebDriverException: Message: The executable chromedriver.exe needs to be available in the path. 
This method needs to be implemented in a sub class

出现这种错误,就是让你别用我说的Service直接去掉,我更新了win11,可能是这玩意儿的锅,看情况用吧

把ChromeDriver.exe更新到最新更新地址(我这个巨快)

放到python安装地址

或者使用executable_path="ChromeDriver.exe路径名",

第二种情况虽然会报错,但对程序无影响,可以用异常处理跳过        还有,你可以试着更新selenium库(应该有用)

6.总结

爬虫写的好,牢饭吃地饱

看到这你还不点个赞嘛(球球了)

python + selenium + Chromedriver 的浏览器爬虫出现的一些问题的汇总相关推荐

  1. centOS 7 python+selenium+chromedriver(无界面) 环境搭建

    centOS 7 python+selenium+chromedriver(无界面) 环境搭建 一.Linux (Centos)安装谷歌浏览器(正常步骤加暴力两种方法)(部分转载) 1. 安装依赖法 ...

  2. mac 搭建python+selenium+chromedriver环境

    mac 搭建python+selenium+chromedriver环境 有关配置默认python3,请查看:https://blog.csdn.net/qq_35098526/article/det ...

  3. python+selenium实现的谷歌爬虫(超详细)

    python+selenium实现的谷歌爬虫 接到一个需求,需要从谷歌图库中爬取图片.于是按照之前的爬取国内网站的图片的方法,进入谷歌图库的图片页面,打开谷歌开发者工具,选中network面板,然后翻 ...

  4. 【Python + selenium】在浏览器打开新页签

    [Python + selenium]在浏览器打开新页签,打开方式 2017年09月06日 11:34:25 宇风-飞扬 阅读数:3472 标签: seleniumpython句柄移动 更多 个人分类 ...

  5. Python+Selenium,让浏览器自动帮你下文献

    在做学术.搞科研的过程中,我们往往需要针对一个特定的主题下载海量的文献.在把几百篇文献下载到电脑的过程中,假如遇到不够友好的数据库不提供批量下载的功能,怎么办?我恰好遇到了这样的批量下载的科研任务和批 ...

  6. python+selenium多线程与多进程爬虫

    使用python+selenium抓取深圳证券交易所本所公告数据,刚开始是用单进程爬取的,最近将代码修改了一下,分别用多进程和多线程进行抓取,速度非常快.如果对selenium不了解的请移步别的地方学 ...

  7. Python+Selenium多线程基础微博爬虫

    一.随便扯扯的概述 大家好,虽然我自上大学以来就一直在关注着CSDN,在这上面学到了很多知识,可是却从来没有发过博客(还不是因为自己太菜,什么都不会),这段时间正好在机房进行期末实训,我们组做的是一个 ...

  8. 基于Python, Selenium, Phantomjs无头浏览器访问页面

    引言: 在自动化测试以及爬虫领域,无头浏览器的应用场景非常广泛,本文将梳理其中的若干概念和思路,并基于代码示例其中的若干使用技巧. 1. 无头浏览器 通常大家在在打开网页的工具就是浏览器,通过界面上输 ...

  9. Selenium3 + Python3自动化测试系列一——安装Python+selenium及selenium3 浏览器驱动

    一.安装Python https://www.python.org/downloads/ 验证Python是否安装成功.打开Windows命令提示符(cmd),输入python,回车 注意:在安装的过 ...

  10. [转载] 基于Python, Selenium, Phantomjs无头浏览器访问页面

    参考链接: Selenium Python技巧 引言: 在自动化测试以及爬虫领域,无头浏览器的应用场景非常广泛,本文将梳理其中的若干概念和思路,并基于代码示例其中的若干使用技巧. 1. 无头浏览器 通 ...

最新文章

  1. Work with Alexa :Echo匹配连接到Alexa
  2. C# 利用Jmail接收邮件
  3. tensorflow sigmoid_cross_entropy_with_logits 函数解释
  4. 关于 SAP Spartacus 注入服务 UserAccountService 和 facade 的问题
  5. 类和类之间的关系解析-1
  6. 安卓实现序列化之Parcelable接口
  7. java中检查性异常类_Java异常处理、java语言推崇使用检查类型异常
  8. LeetCode-Largest Rectangle in Histogram
  9. fastjson 判断value是对象还是数组
  10. sql 自定义函数 示例_SQL滞后函数概述和示例
  11. No.3小白的HTML+CSS心得篇
  12. Qt之QThread介绍(常用接口及实现、自动释放内存、关闭窗口时停止线程运行、同步互斥)
  13. 【老生谈算法】matlab实现香农编码源码——香农编码
  14. 天气预报本地准时宝隐私政策
  15. DataInputStream.readUTF返回返回EOFException
  16. Excel开发帮助文档查看方法
  17. crf graph matlab_如何评价 Vicarious 在 Science 上提出基于概率图模型(PGM)的 RCN 模型?...
  18. 【一文弄懂】张正友标定法-完整学习笔记-从原理到实战
  19. ISO27001认证是信息安全管理体系认证
  20. B站视频播放声音调到最大仍然听不清楚怎么办?

热门文章

  1. 腾讯云Ubuntu服务器安装Python3.6的虚拟环境
  2. centos7完全卸载mysql_Centos7 完全卸载mysql
  3. html日期默认,html日期控件默认设置为当天日期
  4. NVMe驱动学习记录-1
  5. ST电机库无感FOC模式接电机前准备工作(1)----PWM波的生成
  6. 基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(v6.6.6版)
  7. 【推荐系统】音乐推荐系统02
  8. 【第八周】程序设计方法学
  9. 2017电子设计大赛论文:滚球控制系统
  10. R语言中写入Excel的不同sheet表格