爬虫&Selenium&ChromeDriver
一、Selenium
- selenium是什么
Selenium [1] 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。
在python爬虫可以简单的理解为:Selenium就是模仿人使用浏览器
如何下载或者是安装selenium
cmd进入win终端,输入命令
pip install selenium
二、ChromeDriver
ChromeDrive是什么
这个和JDBC类似,就是Selenium操作Chrome浏览器的驱动。同理Selenium操作Firefox浏览器就需要geckodriver,操作IE浏览器需要IEDriverServer驱动。

如何下载或者安装ChromeDriver
注意:ChromeDriver要和自己使用的chrome版本一致
注意:ChromeDriver要和自己使用的chrome版本一致
注意:ChromeDriver要和自己使用的chrome版本一致2.1 查询自己chrome的版本
地址栏输入:
chrome://version/

比如我的是:80.0.3987.149
2.2 下载ChromeDriver
地址栏:
https://npm.taobao.org/mirrors/chromedriver/

这里可能有人要问,不是最后一位不一样吗?
答:的却,但是我估计只要前三位相同应该都可以的。有兴趣的同学可以试一下哈
点击进去,下载对应的OS版本,比如我的是win电脑,我就下载第三个。

2.3 下载好之后,解压,把chromedriver.exe放到任意位置都可以。但是有要求:
- 路径上不能有中文
- 存放的路径不需要特殊权限
这样就可以了,接下来我们来测试一下。
三、测试
直接看代码
from selenium import webdriver #导入必要的库
#功能需求:模仿人类使用搜索框进行搜索
# 业务分析:在搜索框中输入“关键字”,点击“百度一下”或者是“回车” #chromedriver.exe的存放路径
driver_path=r"C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe" # 通过webdriver对象的Chrome方法【不同的浏览器对应不同的方法】,获取到chromedriver.exe
driver = webdriver.Chrome(executable_path=driver_path) # 访问百度
driver.get("http://www.baidu.com") # 根据页面的id值定位到搜索框的
input_tag = driver.find_element_by_id("kw") #假如我们搜索“java”
input_tag.send_keys("java") # 根据页面id获取到“百度一下”按钮
submit_btn = driver.find_element_by_id("su") #这个方法其实就是模仿人们点击“百度一下”按钮或者是“回车”
submit_btn.click()运行代码。它会自动打开浏览器并自动输入“java”,并回车。
看效果

四、为什么要用它——Selenium
答:因为有很多网站的数据都是异步请求(Ajax)加载数据的,我们直接爬取是获取不到数据的。因此我们使用selenium爬取返回来的页面是已经经过浏览器解析好的页面,我们再通过使用Xpath、bs4等,就可以爬取自己想要的数据了。
爬虫&Selenium&ChromeDriver的更多相关文章
- 爬虫 selenium+Xpath 爬取动态js页面元素内容
介绍 selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法直接执行JavaScript代码的问题 selenium本质是通过驱动浏览器,完全模拟浏览器的操作,比如 ...
- 爬虫----selenium模块
一.介绍 selenium最初是一个测试工具,而爬虫中使用它主要是为了解决requests无法直接执行JavaScript代码的问题 selenium本质是通过驱动浏览器,完全模拟浏览器的操作,比如跳 ...
- Python爬虫——selenium模块
selenium模块介绍 selenium最初是一个测试工具,而爬虫中使用它主要是为了解决requests无法直接执行JavaScript代码的问题 selenium本质是通过驱动浏览器,完全模拟浏览 ...
- 爬虫---selenium动态网页数据抓取
动态网页数据抓取 什么是AJAX: AJAX(Asynchronouse JavaScript And XML)异步JavaScript和XML.过在后台与服务器进行少量数据交换,Ajax 可以使网页 ...
- selenium + ChromeDriver 实战系列之启信宝(一)
之前写了一篇selenium + ChromeDriver的一些入门的知识,这篇博客里面找了启信宝这个网站,简单的进行了一个实战练习.本篇博客的结构如下: 首先会给出一些使用seleniu ...
- Python爬虫-selenium的使用(2)
使用selenium打开chrome浏览器百度进行搜索 12345678910111213141516171819202122232425 from selenium import webdriver ...
- [Python爬虫] Selenium实现自动登录163邮箱和Locating Elements介绍
前三篇文章介绍了安装过程和通过Selenium实现访问Firefox浏览器并自动搜索"Eastmount"关键字及截图的功能.而这篇文章主要简单介绍如何实现自动登录163邮箱,同时 ...
- [Python爬虫] Selenium+Phantomjs动态获取CSDN下载资源信息和评论
前面几篇文章介绍了Selenium.PhantomJS的基础知识及安装过程,这篇文章是一篇应用.通过Selenium调用Phantomjs获取CSDN下载资源的信息,最重要的是动态获取资源的评论,它是 ...
- [Python爬虫] Selenium获取百度百科旅游景点的InfoBox消息盒
前面我讲述过如何通过BeautifulSoup获取维基百科的消息盒,同样可以通过Spider获取网站内容,最近学习了Selenium+Phantomjs后,准备利用它们获取百度百科的旅游景点消息盒(I ...
随机推荐
- mongodb游标快照
示例代码 1. 初始数据 > db.snapshot_test.find() { "_id" : ObjectId("560ba37c694895b2de42254 ...
- c#或者C#.net中的“ToolTip”是“System.Windows.Forms.ToolTip”和“DevComponents.DotNetBar.ToolTip”之间的不明确的引用
“ToolTip”是“System.Windows.Forms.ToolTip”和“DevComponents.DotNetBar.ToolTip”之间的不明确的引用 ,在编程时,有时候会编译出现不明 ...
- Docker深入浅出系列 | 单机Nginx+Springboot实战
目录 Nginx+Springboot实战 前期准备 实战目标 实战步骤 创建Docker网络 搭建Mysql容器 搭建额度服务集群 搭建Nginx服务 验证额度服务 附录 Nginx+Springb ...
- 何用Java8 Stream API进行数据抽取与收集
上一篇中我们通过一个实例看到了Java8 Stream API 相较于传统的的Java 集合操作的简洁与优势,本篇我们依然借助于一个实际的例子来看看Java8 Stream API 如何抽取及收集数据 ...
- python 生成随机数、生成 uuid
1. 使用 uuid.uuid1 产生一个随机数 2. 在使用 random.sample() 产生一个随机字符串 3. 将两者进行拼接 import uuid import random def r ...
- YA157C交叉编译环境搭建
目录 1.开发板简介 3.主机搭建交叉编译环境 4.编译第一个ARM Linux程序--Hello World 5.在开发板上运行Hello World程序 6.ssh登录开发板 7.注意 8.she ...
- C++编码规范(转)
转载链接:https://www.jianshu.com/p/b262d76902e4 一.命名规范 1.通则 1).所有命名都应使用标准的英文单词或缩写,不得使用拼音或拼音缩写,除非该名字描述的是中 ...
- 002-DOM事件实例-实现一个可以拖拽的登陆窗口
前言:这是跟着慕课网一个老师的视频做的,这几天在重新的梳理自己,写完这个例子要系统的学一下jQuery,我司现在用的还是比较多,毕竟用了它不用考虑IE兼容性,可以让开发更有效率. 1.项目需求及基本的 ...
- webstorm 提示 "scanning files to index..." 一直不能编译的问题
先说一下我的操作过程吧: 下载公司的vue项目后,要用到webpack打包工具,需要按照package.json安装一些依赖,我使用了镜像后,npm install模块时候生成了一个 node_mod ...
- XML学习笔记--背诵版
前言 一直想系统性的学XML,就没时间学,今晚抽出几个小时时间学完了XML.过几天再过来看看,背一背应该就差不多,记得东西较多,没什么难理解的. XML数据传输格式 第一章 XML概述 1.1 引入 ...