【Python爬虫】Selenium使用

安装配置教程自行搜索

所用驱动chromedriver应与chrome浏览器版本相对应

pip install selenium

笔者selenium所用版本为4.11.2,新旧版之间会有差别

from selenium import webdriver
driver = webdriver.Chrome()

实例化driver对象后,driver对象有一些常用的属性和方法

driver.page_source #当前标签页浏览器渲染之后的网页源代码
driver.current_url #当前标签页的url
driver.close()     #关闭当前标签页,如果只有一个标签页则关闭整个浏览器
driver.quit()      #关闭浏览器
driver.forward()   #页面前进
driver.back()      #页面后退
driver.refrash()   #页面刷新
driver.save_screenshot("img_name") #页面截图

我们使用Selenium时会觉得浏览器加载很慢,这和它的页面加载策略有关

Selenium的页面加载策略(pageLoadStrategy)

本段摘自:https://blog.csdn.net/momoda118/article/details/120624777

  1. normal:等待整个页面加载完毕再开始执行操作(默认为此)
  2. eager:等待整个dom树加载完成,即DOMContentLoaded这个事件完成,也就是只要 HTML完全加载和解析完毕就开始执行操作。放弃等待图片、样式、子帧的加载。
  3. none:等待html下载完成,哪怕还没开始解析就开始执行操作。

加载策略设置为eager

配置代码如下:

chrome_options = Options()
chrome_options.page_load_strategy = 'eager'
driver = webdriver.Chrome(options=chrome_options)

加载策略设置为none

加载策略设置为none,并引入retry做重试(目的是为了防止报错,当然设置隐式等待也可,但没retry稳妥)可以只用2s左右就能执行完成,完整代码如下:

import datetime
from retrying import retry  # 需第三方库,需pip进行安装
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By

@retry(wait_fixed=10, stop_max_attempt_number=1)
def click(path):
    driver.find_element(By.XPATH, path).click()
    
chrome_options = Options()
chrome_options.page_load_strategy = 'none'
driver = webdriver.Chrome(options=chrome_options)
start_time = datetime.datetime.now()
driver.get('https://www.iqiyi.com/')
click('//*[@id="block-C"]/div/div/div/div[1]/div[1]/div/div[1]/div/div/a/span[2]')
end_time = datetime.datetime.now()
print(end_time - start_time)

元素定位

本段参考:https://blog.csdn.net/qq_18298049/article/details/117136214

element = driver.find_element(By.ID, 'kw')   # 通过ID定位搜索框

element = driver.find_element(By.NAME, 'wd')   # 通过name定位搜索框

element = driver.find_element(By.CLASS_NAME, 's_ipt')   # 获取百度首页搜索框

element = driver.find_element(By.TAG_NAME, 'input')  # 查找标签名称是input的元素
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值