栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

1.please use find_element instead find_element_by_XXX (这年头人不停内卷,连selenium库也卷起来了)

就像这样给你一条杠杠

​​ 

然后告诉你已经过时了 

 然后你就得这么用

from selenium.webdriver.common.by import By


driver.find_element(By.元素名称(大写), '元素内容')
2.模拟登录过滑块时出现,一直被要求重新刷新
像这样的

 代码如下

from selenium import webdriver
from selenium.webdriver.chrome.service import Service

sever = 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})"""
})#具体上就是防止服务器查出我们是webdriver

driver.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.往前翻找到 '