pytho爬虫之selenium的使用

时间:2019-06-18
本文章向大家介绍pytho爬虫之selenium的使用,主要包括pytho爬虫之selenium的使用使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

一、selenium简介

  1、什么是selenium

  selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法执行javaScript代码的问题。

  2、selenium的用途

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


  (2)、selenium本质上是通过驱动浏览器,完全模拟浏览器的操作,比如跳转、输入、点击、下拉等...进而拿到网页渲染之后的结果,可支持多种浏览器
  3、selenium是优缺点
  (1)优点
    优点就是可以帮我们避开一系列复杂的通信流程,例如在我们之前学习的requests模块,那么requests模块在模拟请求的时候是不是需要把素有的通信流程都分析完成后才能通过请求,然后返回响应。假如目标站点有一系列复杂的通信流程,例如的登录时的滑动验证等...那么你使用requests模块的时候是不是就特别麻烦了。不过你也不需要担心,因为网站的反爬策略越高,那么用户的体验效果就越差,所以网站都需要在用户的淫威之下降低安全策略。
    再看一点requests请求库能不能执行js?是不是不能呀!那么如果你的网站需要发送ajax请求,异步获取数据渲染到页面上,是不是就需要使用js发送请求了。那浏览器的特点是什么?是不是可以直接访问目标站点,然后获取对方的数据,从而渲染到页面上。那这些就是使用selenium的好处!
  (2)缺点
    使用selenium本质上是驱动浏览器对目标站点发送请求,那浏览器在访问目标站点的时候,是不是都需要把静态资源都加载完毕。html、css、js这些文件是不是都要等待它加载完成。是不是速度特别慢。那用它的坏处就是效率极低!所以我们一般用它来做登录验证。
二、selenium的安装
  1、下载selenium模块:
    pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple selenium
    或者在pycharm中下载
  2、安装浏览器驱动
    (1)、Google浏览器驱动:https://sites.google.com/a/chromium.org/chromedriver/downloads
        注:把下载好的chromedriver.exe放到python安装路径的scripts目录中即可,
    (2)、firefox浏览器驱动:
      selenium3默认支持的webdriver是Firfox,而Firefox需要安装geckodriver
      下载链接:https://github.com/mozilla/geckodriver/releases

 三、selenium的基本使用

from selenium import webdriver  # 用来驱动浏览器的
from selenium.webdriver import ActionChains  # 破解滑动验证码的时候用的 可以拖动图片
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  # 和下面WebDriverWait一起用的
from selenium.webdriver.support.wait import WebDriverWait  # 等待页面加载某些元素
import time

driver=webdriver.Chrome()

try:
wait=WebDriverWait(driver,10)
#1、访问百度
driver.get('https://www.baidu.com/')
#2、查找输入框
# input_tag = wait.until(
# # 调用EC的presence_of_element_located()
# EC.presence_of_element_located(
# # 此处可以写一个元组
# # 参数1: 查找属性的方式
# # 参数2: 属性的名字
# (By.ID, "kw")
# )
# )
input_tag=wait.until(EC.presence_of_element_located((By.ID,"kw")))

#3、在搜索框在输入要搜索的内容
input_tag.send_keys('秦时明月')

# 4、按键盘回车键
input_tag.send_keys(Keys.ENTER)

time.sleep(3)

finally:
driver.close()

原文地址:https://www.cnblogs.com/lweiser/p/11045023.html