赞
踩
下载与浏览器匹配的浏览器驱动文件,这里一定注意的是,要选择和浏览器版本号相同的驱动程序,否则后面会有很多问题。
(1)浏览器(以google为例)版本号的查询:
我这里的版本号是124版本,所以要下载对应版本号的驱动文件
1.ChromeDriver 国内下载地址:Get WebDriver - Download WebDriver ChromeDriver
2.版本号在114之前的选择如下地址:chromedriver.storage.googleapis.com/index.html
下载selenium包:
pip install selenium
建议安装较低版本的selenium,这里建议安装4.5.0版本,否则可能会出现闪退问题
pip install selenium==4.5.0
(1)将下载的chromedriver包解压得到chromedriver.exe,并放到要使用的当前目录下:
(2)在所需要使用的文件中导入selenium
- # (1) 导入selenium
- from selenium import webdriver
(3)创建浏览器操作对象
- # (2) 创建浏览器操作对象
- browser = webdriver.Chrome()
(4) 访问网站
- # 访问网址
- url = 'https://www.jd.com/' #以访问京东为例
- browser.get(url)
(5) page_source获取网页源码
- # 获取网网页源码 page_source获取网页源码
- content = browser.page_source
- print(content)
需要先导入By
from selenium.webdriver.common.by import By
(1)使用id来找到对象
- button = driver.find_element(By.ID, 'su')
- print(button)
(2)根据xpath语句来获取对象
- button = driver.find_element(By.XPATH, '//input[@id="su"]')
- print(button)
(3)根据bs4表示语句来获取对象
- button = driver.find_element(By.CSS_SELECTOR, '#su')
- print(button)
(4)根据标签名字来获取对象
- button = driver.find_element(By.TAG_NAME, 'input')
- print(button)
(5)根据标签名字来获取对象[返回列表,多个]
- button = driver.find_elements(By.TAG_NAME, 'input')
- print(button)
(6)链接文本
- button = driver.find_elements(By.LINK_TEXT, '新闻')
- print(button)
交互
(1)在文本框中输入内容【send_keys】
- # 获取文本框对象
- input = broswer.find_element(By.ID, 'kw')
- # 在文本框中输入周杰伦
- content = input.send_keys('袁隆平')
(2)点击按钮
- # 获取百度一下的按钮
- baiduyixia = broswer.find_element(By.ID, 'su')
- # 点击一下按钮
- baiduyixia.click()
(3)滑到底部[执行脚本]
- js_bottom = 'document.documentElement.scrollTop=100000'
- broswer.execute_script(js_bottom)
(4)获取下一页按钮并执行点击
- # 创建浏览器对象
- broswer = webdriver.Chrome()
- broswer.forward() #前进
(5)回退到上一页
- broswer = webdriver.Chrome()
- broswer.back() #后退
(6)关闭浏览器
- broswer = webdriver.Chrome()
- broswer.quit() #关闭浏览器
(1)handless
selenium默认是有页面的,所以会存在加载大量css和js。针对这一问题,selenium下的handless可以实现无界面访问,提高访问速度和效率。
- # 基本配制
- def share_browser():
- options = webdriver.ChromeOptions() # 创建配置对象
- options.add_argument('--headless') # 无头参数,浏览器隐藏在后台运行
- options.add_argument('--window-size=1920x1080') # 设置浏览器分辨率(窗口大小)
- options.add_argument('--disable-gpu') # 禁用GPU加速
- browser = webdriver.Chrome(options=options) # 创建浏览器对象
- return browser
以访问csdn为例演示一个小案例:
- from selenium import webdriver
-
- def share_browser():
- options = webdriver.ChromeOptions() # 创建配置对象
- options.add_argument('--headless') # 无头参数,浏览器隐藏在后台运行
- options.add_argument('--window-size=1920x1080') # 设置浏览器分辨率(窗口大小)
- options.add_argument('--disable-gpu') # 禁用GPU加速
- browser = webdriver.Chrome(options=options) # 创建浏览器对象
- return browser
-
- broswer = share_browser()
-
- url = 'https://www.csdn.net/' # 访问csdn页面
-
- broswer.get(url)
- broswer.save_screenshot('csdn.png')
快照
关于options的更多配置,请看:Selenium自动化教程02:浏览器options配置及常用的操作方法_selenium options-CSDN博客
(2) phantomjs
phantomjs也可以实现无界面,但现已经被启用,且操作较handless为麻烦,固不推荐。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。