Selenium驱动浏览器
1)下载与安装
- 下载Chrome的驱动(注意版本匹配):http://chromedriver.storage.googleapis.com/index.html
- 下载selenium:使用Pychorm下载
2)基本操作
# (1)导入:from selenium import webdriver
# from selenium.webdriver.common.by import By
# (2)创建谷歌浏览器操作对象:
# path = 谷歌浏览器驱动文件路径
# browser = webdriver.Chrome(path)
# (3)访问网址
# url = 要访问的网址
# browser.get(url)
元素定位
1.find_element
根据id获取按钮【常用】
eg:button = browser.find_element(By.ID, "su")
根据name属性名称获取按钮
eg:browser.find_element(By.NAME, "wd")
根据xpath【常用】
eg:browser.find_element(By.XPATH, "//input[@id='su']")
根据标签名称
eg:browser.find_element(By.TAG_NAME, "input")
根据BeautifulSoup的语法【常用】
eg:browser.find_element(By.CSS_SELECTOR, "#su")
根据链接的文本的语法
eg:browser.find_element(By.LINK_TEXT, "图片")
访问元素信息
获取元素属性
.get_attribute('class')
获取元素文本
.text
获取标签名
.tag_name
案例:操作浏览器搜索周杰伦
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
path = "driver_file/chromedriver.exe"
browser = webdriver.Chrome(path)
url = "https://www.baidu.com/"
browser.get(url)
time.sleep(2)
# 获取文本框的对象
input = browser.find_element(By.ID, "kw")
# 在文本框中输入周杰伦
input.send_keys("周杰伦")
time.sleep(2)
# 定位到百度一下
button = browser.find_element(By.ID, "su")
button.click()
time.sleep(2)
# 滑到页面底部
js_button = 'document.documentElement.scrollTop=100000'
browser.execute_script(js_button)
time.sleep(2)
# 点击下一页按钮
next = browser.find_element(By.XPATH, '//a[@class="n"]')
next.click()
time.sleep(2)
# 撤回
browser.back()
time.sleep(2)
# 重做
browser.forward()
# 退出浏览器
browser.quit()
3)性能优化:Chrome handless
系统要求
Chrome
Unix\Linux 系统需要 chrome >= 59
Windows 系统需要 chrome >= 60
Python3.6
Selenium==3.4.*
ChromeDriver==2.31
标准配置并封装:仅仅需要修改path路径
from selenium import webdriver
# 这个是浏览器自带的 不需要我们再做额外的操作
from selenium.webdriver.chrome.options import Options
def share_browser():
# 初始化
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
# 浏览器的安装路径 打开文件位置
# 这个路径是你谷歌浏览器的路径
path = r'C:\Program Files\Google\Chrome\Application\chrome.exe'
chrome_options.binary_location = path
browser = webdriver.Chrome(chrome_options=chrome_options)
return browser