1、chromedriver位置
下载:这里是一个镜像网站
https://chromedriver.storage.googleapis.com/index.html
根据自己的浏览器下载合适的版本
将chromedriver 放到环境内
具体为:
venv > scripts 下
也就是python安装位置

2、使用
两个常用的命令
from selenium import webdriver
from selenium.webdriver.common.by import By
打开浏览器
driver = webdriver.Chrome()
打开一个网页
driver.get("http://www.baidu.com")
选择一个元素
element = driver.find_element(By.ID, "kw")
element.send_keys("hello\n")# 注 此处\n是回车的意思
有时候chromedriver访问会被拒绝
如:

但是正常浏览器显示的是fasle

解决办法:
def getDriver2():
# 此处将浏览器的window.navigator.webdriver 改为flase
options = webdriver.ChromeOptions()
# 修改window.navigator.webdriver为undefined,防机器人识别机制,selenium自动登陆判别机制
options.add_experimental_option('excludeSwitches', ['enable-automation'])
options.add_argument("--disable-blink-features=AutomationControlled")
# 更换头部
# options.add_argument('user-agent=' + a_user)
options.add_argument("--disable-extensions")
options.add_argument("--disable-gpu")
driver = webdriver.Chrome(options=options)
return driver
driver = getDriver2()
drver.get("https://www.baidu.com")
常用命令
等待
driver = webdriver.Chrome()
# 隐式等待,需要在driver后面写上
driver.implicitly_wait(10) # 每半秒找寻下元素,直到达到设定的时间,此处为10s
### 这里是每半秒找以下ID为“kw“的元素,一共找10秒,找不到就退出
driver.get("http://www.baidu.com")
element = driver.find_element(By.ID, "kw")
element.send_keys()
# 页面等待, 等待条件满足时,再去获取数据
WebDriverWait(driver, 10).until(lambda d: "python" in d.title)
# 获取当前url
driver.current_url
# 获取标题
driver.title
# 全屏窗口
driver.fullscreen_window()
# 屏幕截图
driver.save_screenshot("./imag.png")
# 元素截图
element.screenshot("./image.png")
# 返回上一页
driver.back()
# 前往下一页
driver.forward()
# 刷新页面
driver.refresh()
向标签发送数据
# 向标签发送数据
# element.send_keys("通讯\n") # \n是回车的意思
# 发送内容然后回车
# element.find_element(By.NAME,"q").send_keys("hello" + Keys.ENTER)
# 清楚输入框内的内容
# element.clear()
# 获取整个标签(包含该元素)
print(element.get_attribute("outerHTML"))
# 获取该元素下面的全部标签
print(element.get_attribute("innerHTML"))
定位和查找页面元素
# 定位和查找页面元素
# 定位单个元素
# driver.find_element(By.NAME,"q")
# 获取元素的多个子元素
# element.find_elements(By.TAG_NAME, "p")
# 获取标签名
# driver.find_element(By.CSS_SELECTOR, "h1").tag_name
获取文本
# 获取文本
# driver.find_element(By.CSS_SELECTOR,"h1").text
# 获取属性
# element.get_attribute("title")
css选择多个元素
find_elements_by_css_selector(css参数)
# driver.find_elements(By.CSS_SELECTOR, "css")
切换窗口
# 找出新窗口:
# new_window = driver.window_handles[-1] # '-1'代表打开的最后一个窗口
# 切换到新窗口:
# driver.switch_to.window(new_window)
# 找出所有窗口的句柄
# windows = driver.window_handles
# print(windows)

本文详细介绍如何使用Selenium进行网页自动化操作,包括配置Chromedriver、常见命令使用、元素定位及高级技巧等。

6078

被折叠的 条评论
为什么被折叠?



