一、前言
selenium 作为爬虫和自动化测试中较为常用的包,在 python 中扮演着非常重要的角色
requests 与 selenium 的区别:
- 前者是基于接口的爬虫,后者是基于浏览器页面的爬虫
- 前者对于一些加密接口是很难处理的,虽然前端无隐私,但是破解需要耗费大量时间,而后者仅获取页面渲染后的结果,不需要开发者去请求异步接口
- 前者可以轻松解决大部分问题,但解决疑难杂症还得靠后者
- 前者灵活速度快,后者需要启动一个对应版本的浏览器驱动,相对复杂
- requests模块的用法可以参考这里 https://blog.csdn.net/weixin_43721000/article/details/125718679
二、安装方法
- 安装 selenium 库
pip install selenium
- 下载对应版本的浏览器驱动,我这里下载的是谷歌的浏览器驱动 chromedriver.exe,版本号是 105
国内镜像地址:https://registry.npmmirror.com/binary.html?path=chromedriver/
浏览器驱动的版本号一定要和你浏览器的版本号对上
三、简单案例
老版本写法
from selenium import webdriver
from selenium.webdriver.common.by import By
if __name__ == '__main__':
# 加载谷歌浏览器驱动
driver = webdriver.Chrome(executable_path='./chromedriver.exe')
# 打开百度首页
driver.get('https://www.baidu.com/')
# 获取百度导航栏中的文本
xp = '//*[@id="s-top-left"]/a'
nav_list = [elm.get_attribute('text') for elm in driver.find_elements(by=By.XPATH, value=xp)]
print(nav_list)
# ['新闻', 'hao123', '地图', '贴吧', '视频', '图片', '网盘']
新版写法
from selenium import webdriver
from selenium.webdriver.common.by import By
if __name__ == '__main__':
options = webdriver.ChromeOptions()
options.add_argument('lang=en_US') # 设置语言,默认跟浏览器设置一样,答主这里需要英文网页所以改成英文
service = webdriver.ChromeService(executable_path="./chromedriver.exe")
driver = webdriver.Chrome(options=options, service=service)
# # 加载谷歌浏览器驱动
# driver = webdriver.Chrome()
# 打开百度首页
driver.get('https://www.baidu.com/')
# 获取百度导航栏中的文本
xp = '//*[@id="s-top-left"]/a'
nav_list = [elm.get_attribute('text') for elm in driver.find_elements(by=By.XPATH, value=xp)]
print(nav_list)
# ['新闻', 'hao123', '地图', '贴吧', '视频', '图片', '网盘']
四、常用方法总结
可以参考这篇文章 https://blog.csdn.net/weixin_43721000/article/details/126976436