selenium简介

什么是selenium

selenium是一个Web的自动化测试工具,最初是为网站自动化测试而开发的,Selenium 可以直接运行在浏览器上,它支持所有主流的浏览器,可以接收指令,让浏览器自动加载页面,获取需要的数据,甚至页面截屏。而爬虫中使用它主要是为了解决requests无法执行javaScript代码的问题。

selenium模块本质是通过驱动浏览器,完全模拟浏览器的操作,比如跳转、输入、点击、下拉等,来拿到网页渲染之后的结果,可支持多种浏览器;

selenium爬虫称之为可视化爬虫
主要是网页解析的爬虫方式
selenium爬虫主要是模拟人的点击操作
selenium驱动浏览器并进行操作的过程是可以观察到的
类似于你在看着 代码 在帮你操纵你的浏览器
当然了,selenium也有无界面模式

Selenium的核心Selenium Core基于JsUnit,
完全由JavaScript编写,因此可以用于任何支持JavaScript的浏览器上。
selenium可以模拟真实浏览器,自动化测试工具,支持多种浏览器,

爬虫中主要用来解决JavaScript渲染问题。

用python写爬虫的时候,主要用的是selenium的Webdriver

selenium的用途

1)、selenium可以驱动浏览器自动执行自定义好的逻辑代码,也就是可以通过代码完全模拟成人类使用浏览器自动访问目标站点并操作,那我们也可以拿它来做爬虫。

2)、selenium本质上是通过驱动浏览器,完全模拟浏览器的操作,比如跳转、输入、点击、下拉等…进而拿到网页渲染之后的结果,可支持多种浏览器

selenium是优缺点

1)优点

python常用的爬虫基本上都是通过requests模拟http通信的过程进行获取数据,但是requests无法解析js运行后的效果,而且面对一些复杂的场景,需要模拟实现非常麻烦,比如验证码,滑动验证等,登录等。

而selenium是模拟浏览器的访问操作,包括了页面的js渲染执行。也就是我们看到的数据都能获取到,而且支持界面操作,遇到复杂的滑动校验和需要登录时,可以在界面上操作, 这就是使用selenium的好处!

2)缺点

使用selenium本质上是驱动浏览器对目标站点发送请求,那浏览器在访问目标站点的时候,需要把静态资源都加载完毕。html、css、js这些文件都要等待它加载完成,速度特别慢。由于在获取页面的过程中会发送很多请求,所以效率非常低,所以在很多时候需要酌情使用。

Chromedriver的介绍

Chromedriver 也是一个能够被selenium驱动的浏览器,它是有界面的。Chromedriver下载你需要先查看自己的Chrome浏览器的版本,然后选择对应的Chromedriver。

PhantomJS

PhantomJS可以理解成是一个 没有可视化页面的浏览器。

PhantomJS是一个而基于WebKit的服务端JavaScript API,支持Web而不需要浏览器支持,其快速、原生支持各种Web标准:Dom处理,CSS选择器,JSON等等。

PhantomJS可以用用于页面自动化、网络监测、网页截屏,以及无界面测试.

selenium的安装

下载selenium模块:

pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple selenium

或者在pycharm中下载

安装浏览器驱动

注意:Chromedriver和电脑上的chrome版本有对应关系,建议使用最新的Chromedriver版本并且更新chrome浏览器到最新版,如不更新则需要查看自己的chrome 浏览器版本。

1)、Google浏览器驱动
https://npm.taobao.org/mirrors/chromedriver

https://sites.google.com/a/chromium.org/chromedriver/downloads
注:把下载好的chromedriver.exe放到python安装路径的scripts目录中即可(其实放哪都可以,但是需要配环境变量,放Python安装目录下省事)

加入环境变量的方法 比如我的是 Mac OS,就把下载好的文件放在 /usr/local/bin 目录下就可以了。

sudo cp ./chromedriver /usr/local/bin/
andrew@macbook:~/Downloads#sudo chmod +x /usr/local/bin/chromedriver

检查:终端输入

ls /usr/local/bin/chromedriver

看到bin目录下确实看到了文件chromedriver,说明成功了

注意,也可以添加到 /usr/bin,不过会遇到Operation not permitted

原因

没有权限的提示信息,operation not permitted,和Read-Only filesystem错误,这是因为Mac系统有一个 System Integrity Protection (SIP) 系统完整性保护,如果此功能不关闭,是无法移动到 /usr/bin 目录下的

解决方案参考:

办法:
1、Mac关机

2、开机,并按住command+R键,直到出现苹果logo及进度条

3、你会进入到恢复模式,选择上方实用工具下的终端,进入终端

4、在终端输入命令csrutil disable,然后关闭终端。(如果要重新开启,同样的方法输入csrutil enable)

5、电脑重启后,进入终端,cd到文件位置,运行下面的代码,增加写的权限

sudo mount -uw /

6、再运行mv命令

2)、firefox浏览器驱动:
selenium3默认支持的webdriver是Firfox,而Firefox需要安装geckodriver

下载链接:https://github.com/mozilla/geckodriver/releases

测试是否安装成功

from selenium import webdriver
browser=webdriver.Chrome()                #实例化1个谷歌浏览器对象
browser.get('https://www.baidu.com/')     #开始

selenium的基本使用

import time
from selenium import webdriver#驱动浏览器
from selenium.webdriver import ActionChains #滑动
from selenium.webdriver.common.by import By #选择器
from selenium.webdriver.common.by import By #按照什么方式查找,By.ID,By.CSS_SELECTOR
from selenium.webdriver.common.keys import Keys #键盘按键操作
from selenium.webdriver.support import expected_conditions as EC  #等待所有标签加载完毕
from selenium.webdriver.support.wait import WebDriverWait #等待页面加载完毕 寻找某些元素browser=webdriver.Chrome() #调用Chrome 驱动,生成浏览器对象
wait=WebDriverWait(browser,10) #设置selenium等待浏览器加载完毕的最大等待时间try:browser.get('https://www.baidu.com/')baidu_input_tag=browser.find_element_by_id("kw")  #寻找到百度页面的id='kw'的标签key=baidu_input_tag.send_keys('张小凡')             #在标签中输入'张小凡'baidu_button_tag=browser.find_element_by_id('su') #寻找到百度页面id='su'的标签baidu_button_tag.click()                           #点击wait.until(EC.presence_of_element_located((By.ID,'4')))  #等待百度页面 ID='4'的标签完毕,最大等待10秒'''请求相关:browser.get('url')响应相关:print(browser.page_source) #显示网页源码print(browser.current_url)   #获取当前urlprint(browser.get_cookies()) #获取当前网页cokies'''finally:time.sleep(5)browser.close()      #关闭浏览器

更多文档

https://selenium-python-docs-zh.readthedocs.io/zh_CN/latest/

https://github.com/SeleniumHQ/selenium

https://selenium-python-zh.readthedocs.io/en/latest/index.html

https://www.selenium.dev/selenium/docs/api/py/api.html

python--爬虫--selenium的简介和使用相关推荐

  1. Python爬虫——Selenium 简介和下载

    文章目录 Python爬虫--Selenium 简介和下载 1.Selenium 简介 2.Selenium 下载安装 3.Selenium 简单使用 Python爬虫--Selenium 简介和下载 ...

  2. [Python爬虫] Selenium实现自己主动登录163邮箱和Locating Elements介绍

            前三篇文章介绍了安装过程和通过Selenium实现訪问Firefox浏览器并自己主动搜索"Eastmount"keyword及截图的功能.而这篇文章主要简介怎样实现 ...

  3. Python爬虫 - Selenium(4)配置启动项参数

    前言:本章将详细介绍Selenium启动项参数的配置,其中包括无界面模式(在服务器上运行不设置此项会报错).浏览器窗口大小设置.浏览器User-Agent (请求头)等等. 目录 一.常用参数 二.代 ...

  4. [Python爬虫] Selenium获取百度百科旅游景点的InfoBox消息盒

    前面我讲述过如何通过BeautifulSoup获取维基百科的消息盒,同样可以通过Spider获取网站内容,最近学习了Selenium+Phantomjs后,准备利用它们获取百度百科的旅游景点消息盒(I ...

  5. [Python爬虫] Selenium+Phantomjs动态获取CSDN下载资源信息和评论

    前面几篇文章介绍了Selenium.PhantomJS的基础知识及安装过程,这篇文章是一篇应用.通过Selenium调用Phantomjs获取CSDN下载资源的信息,最重要的是动态获取资源的评论,它是 ...

  6. [Python爬虫] Selenium实现自动登录163邮箱和Locating Elements介绍

    前三篇文章介绍了安装过程和通过Selenium实现访问Firefox浏览器并自动搜索"Eastmount"关键字及截图的功能.而这篇文章主要简单介绍如何实现自动登录163邮箱,同时 ...

  7. [python爬虫] Selenium常见元素定位方法和操作的学习介绍(转载)

    转载地址:[python爬虫] Selenium常见元素定位方法和操作的学习介绍 一. 定位元素方法 官网地址:http://selenium-python.readthedocs.org/locat ...

  8. Python爬虫 Selenium实现自动登录163邮箱和Locating Elements介绍

    Python爬虫视频教程零基础小白到scrapy爬虫高手-轻松入门 https://item.taobao.com/item.htm?spm=a1z38n.10677092.0.0.482434a6E ...

  9. Python 爬虫 Selenium 基本使用

    Python 爬虫 Selenium 基本使用 1. 基础知识 1.1 下载浏览器驱动 1.2 帮助文档 2. 浏览器操作 2.1 浏览器导航 2.2 窗口和选项卡 2.3 Frames and If ...

  10. Python爬虫-Selenium(1)

    Python爬虫-Selenium(1) @(博客)[python, 爬虫, selenium, Python] Python爬虫-Selenium(1) 前言 前期准备 基础使用 进阶使用 浏览器操 ...

最新文章

  1. GPT-3 再更新,新增编辑和插入文本功能,简直不要太好用!
  2. js 之 object
  3. .NET程序设计之四书五经
  4. python 回溯法 01背包问题_Python回溯法解决01背包问题
  5. JAVA多线程之扩展ThreadPoolExecutor
  6. 买到同类票的概率(洛谷P2719题题解,Java语言描述)
  7. Kubernetes部署软件应用的步骤思路
  8. UVa 10082 WERTYU
  9. 为什么技术管理者要懂一点产品思维?向苹果,爱马仕学习产品底层素养
  10. ARP报文头部格式和请求流程
  11. PHP webshell、暴力破解
  12. GCC自带的一些builtin内建函数
  13. 深入解读App买量行业
  14. 博图WINCC报表(SQL数据库的建立,TIA_wincc在数据库中保存和查询数据,调用Excel模板把数据保存到指定的位置)
  15. 共模电流抑制思路小结
  16. 数据挖掘基础之数据清洗:用python把“深圳二手房参考价”PDF保存为EXCEL
  17. vscode配置tpl文件关联html语言
  18. 计算机蓝屏代码0x000000ED,电脑开机蓝屏代码为0x000000ED怎么解决?
  19. AD7656前端和电源设计
  20. Mysql死锁案例分析

热门文章

  1. mysql select lock in share mode_深入理解SELECT ... LOCK IN SHARE MODE和SELECT ... FOR UPDATE
  2. C#编程规范(常用版)
  3. java毕业设计便利店系统(附源码、数据库)
  4. mysql表白代码_GitHub - Rianley/wechatAlliance: 微信小程序--校园小情书后台源码,好玩的表白墙,告白墙。...
  5. python实现excel数据筛选和数据匹配
  6. Mybatis之配置文件与映射文件的“那些事”,你真的知道吗?
  7. 客服智能排班开发设计
  8. 利用python绘制混淆矩阵
  9. 数据结构笔记——第七章 查找
  10. vue 腾讯地图点聚合 点标注添加信息窗口