网站首页 > 博客文章 正文
什么是Selenium
Selenium是一套完整的Web应用程序测试系统,它包含了测试的录制、编写及运行和测试的并行处理。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。完全有JavaScript编写,因此可以运行于任何支持JavaScript的浏览器上。
Selenium作为爬虫工具的优劣势分析
- 优势
不需要做复杂的抓包、构造请求、解析数据等,开发难度相对要低一些。其访问参数跟使用浏览器的正常用户一模一样,访问行为也相对更像正常用户,不容易被反爬虫策略命中。在需要模拟用户登录、浏览器滑动或点击时,使用Selenium执行js语句非常容易实现,比较适合动态网页的信息爬取。
2. 劣势
相比于抓包→构造请求→解析返回值的爬虫,由于Selenium需要生成一个浏览器环境,所有操作(与元素交互、获取元素内容等)均需要等待页面加载完毕后才可以继续进行,所以速度相比构造请求的慢很多。如果是爬取静态网页,不建议使用Selenium,原因是速度太慢,效率太低。建议使用其他爬虫工具,比如Scrapy。
Window系统下Selenium的安装与浏览器驱动配置
- 安装Selenium
第一步:安装配置Python环境,并安装pip组件。
第二步:在命令行工具中执行如下命令
pip install selenium
第三步:检查是否安装成功,再次执行上面命令,出现如下图所示,表示成功。
2. 配置浏览器驱动
第一步:查看支持的浏览器驱动,依次执行命令:
python
from selenium import webdriver
help(webdriver)
第二步:选择需要使用的浏览器驱动Webdriver,根据电脑的浏览器版本下载对应的驱动到本地。下面是常用驱动下载地址。
Chromedriver(谷歌浏览器) http://chromedriver.storage.googleapis.com/index.html
Geckodriver(火狐浏览器) https://github.com/mozilla/geckodriver/releases
IEdriver(IE浏览器) http://selenium-release.storage.googleapis.com/index.html
Operadriver(Opera浏览器) https://cnpmjs.org/mirrors/operadriver
第三步:将下载的驱动,拷贝到python安装目录。
至此,关于Selenium的安装和驱动配置就全部搞定,下面关于Selenium的使用。
Selenium的基础框架
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
if __name__ == '__main__':
options = Options()
options.add_argument('--headless') # 不打开浏览器
options.add_argument('--disable-gpu') # 禁用GPU硬件加速
options.add_argument('user-agent="Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2pre) Gecko/20070215 K-Ninja/2.1.1"') # 添加访问头
# options.add_argument('proxy-server="60.13.42.109:9999"') # 添加代理
driver = webdriver.Chrome(options=options) # 使用驱动配置
driver.get("https://baike.baidu.com/item/%E4%BD%A0%E5%A5%BD/32416?fr=aladdin")
driver.implicitly_wait(10) # 等待时间
element = driver.find_element_by_xpath("//div[@class='para']") # 执行页面定位语句
isDisplayed = element.is_displayed() # 判断是否允许访问
print(isDisplayed)
print(element.text)
# 将滚动条移动到页面的顶部 0:为顶部;1000000:为底部
js = "var q=document.documentElement.scrollTop=10000000000" # js语句
driver.execute_script(js) # 执行语句
driver.close()
猜你喜欢
- 2024-11-17 应用号,传统APP的革命?(应用号不存在是什么意思)
- 2024-11-17 带你重新认识身边的前端工程师(前端工程师干什么的)
- 2024-11-17 Axure有哪些鲜为人知的使用技巧?(axure详细教程)
- 2024-11-17 英特尔 Evo 认证 PC 对决 M1 Macbook:x86 生态加持,Evo 更省心
- 2024-11-17 手把手教你搭建漂亮好看的个人网站
- 2024-11-17 高保真原型应保真到什么程度?(高保真原型应保真到什么程度才能用)
- 2024-11-17 如何提高npm 下载依赖过慢的问题(npm下载包)
- 2024-11-17 Linux 下源码安装Kong(基于数据Postgres)
- 2024-11-17 NPM升级package.json中的版本号以及更换数据源
- 2024-11-17 Node实战001:Windows搭建Node开发环境
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)