selenium详细操作

背景介绍

在使用selenium访问一个网站的时候会一直304跳转,导致出验证码。百度许久添加了种种参数设置也没用。
后面尝试用undetected_chromedriver,可以解决这个问题。
注: python3.7 以下无法使用

第三方包安装

pip install undetected_chromedriver
1. 访问目标网站
import undetected_chromedriver as uc
 # 指定谷歌浏览器版本 我是109.
 # headless是否无头
driver = uc.Chrome(version_main=109,headless=True)
driver.get('https://www.baidu.com/')
driver.quit()
2. 模拟浏览器加代理

他这个加隧道是一样的,get后会提示你输入账号密码

options = uc.ChromeOptions()  # 创建Chrome参数对象
# options.add_argument("--window-size=1920x1080")  # 设置分辨率
options.add_argument("--proxy-server=http://http-dyn.abuyun.com:9020")  # 加代理
driver = uc.Chrome(version_main=109,options=options)
3. 解析文档

undetected_chromedriver不支持find_element_by_xpath 类似写法

# 返回的是符合条件的第一个
driver.find_element(By.XPATH,'//span[@class="address"]').text
# 返回的是个列表
ul = driver.find_elements(By.XPATH,'//ul/li')
for li in ul:
	li.find_element(By.CLASS_NAME,'abc').text
	li.find_element(By.TAG_NAME,'abc').text
	li.find_element(By.XPATH,'//a[@class="hot-title"]/div').get_attribute('aria-label')
4. 点击、切换

一个小例子介绍 点击、切换、隐式等待、显示等待

流程

  1. 获取当前列表页句柄
  2. 点击进入详情页,并切换至详情页句柄
  3. 解析,获取数据
  4. 关闭详情页,切换回列表页句柄
# 获取当前窗口位置
search_window = driver.current_window_handle

# # 如果是只需等待页面中的一个元素就用显示,等待整个网页加载就用隐式。
# # 显式等待
# WebDriverWait(li, 10).until(
#     EC.presence_of_element_located((By.XPATH, './/a[@class="job-card-left"]'))
# )

# 隐式等待
driver.implicitly_wait(10)
# 点击
li.find_element(By.XPATH,'.//a[@class="job-card-left"]').click()

# 获取全部页面句柄
all_handles = driver.window_handles
# 将当前句柄定位到新打开的页面
driver.switch_to.window(all_handles[-1])
# 解析页面
parse(driver)
# 关闭当前标签页
driver.close()

# 跳转回
for handle in all_handles:
    if handle == search_window:
        driver.switch_to.window(handle)
	        
driver.quit()
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值