IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python--爬虫--selenium的简介和使用 -> 正文阅读

[Python知识库]python--爬虫--selenium的简介和使用

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/bin 目录下就可以了。

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)   #获取当前url
    print(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知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-12-10 11:01:17  更:2021-12-10 11:03:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 4:38:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码