在使用爬虫的过程中,有时候我们需要实现一些浏览的操作,比如访问一下目前的这篇博客,如果使用抓包工具进行分析的话,那么可能会遇到cookie被加密无法获取的情况,此时如果进行分析解密获取cookie,需要能读懂js代码懂一些加密的知识,如果无法完成,那么就无法获得当前博客的源代码,也就无法进行分析。这时候我们可以转换一下思路,我们直接操作浏览器进行操作,那么就可以使用Python提供的一个库selenium,直接操作浏览器。
selenium 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。
这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成 .Net、Java、Perl等不同语言的测试脚本。
安装
pip install selenium
即可成功安装selenium
测试安装成功与否只需要
import selenium
如果没有报错则安装成功。
selenium使用的时候,需要本机还有对应的浏览器的驱动。我这里用的是谷歌浏览器,需要对应的 chomedriver,但是谷歌浏览器版本不同那么对应的驱动版本也不相同。
chromedriver版本V7以前每一个驱动对应一个范围内的浏览器的版本,chromedriver版本从V73以后,与浏览器版本对应形式变为一对一,不再以支持浏览器版本范围的形式提供。具体的版本之间的对用表如下
Chromedriver版本 | 支持的Chrome版 |
75.0.3770.8 | v75 |
74.03729.6 | v74 |
73.0.3683.68 | V73 |
V2.46 | V71-73 |
V2.45 | V70-72 |
V2.44 | V69-71 |
V2.43 | V69-71 |
V2.42 | V68-70 |
V2.41 | V67-69 |
V2.40 | V66-68 |
V2.39 | V66-68 |
V2.38 | V65-67 |
V2.37 | V64-66 |
V2.36 | V63-65 |
每一个版本的浏览器只有对应的浏览器驱动才可以使用。驱动下载地址为http://chromedriver.storage.googleapis.com/index.html
查看对应的谷歌浏览器的版本方法为:在谷歌浏览器的地址栏里输入chrome://version
对于上面的驱动,我每次安装成功之后都会出现错误,最后找到了不会出错的驱动文件库,如下的百度云所示,内部含有我所安装的谷歌浏览器版本的安装包chrome v75.exe和各个版本的驱动exe文件。
下载后的驱动文件中的exe文件需要加入环境变量,最好加入到python所在的文件夹下,同时将谷歌浏览器的exe可执行文件,加入到环境变量。之后就可以用selenium控制浏览器进行相应的操作了。
百度云链接为
链接:https://pan.baidu.com/s/1JV7Fl-lkC6kCzXmaQ_-4dg
提取码:jse0
安装成功之后可以通过下方代码进行一个小测试,如果成功运行没有报错,那么说明成功安装
# -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
import time
my_browser=webdriver.Chrome()
try:
my_browser.get("https://www.baidu.com")
input=my_browser.find_element_by_id("kw")#html代码中输入框的id是kw 其他界面相应的找到id
input.send_keys("hello world")#向输入框内部输入hello world
input.send_keys(Keys.ENTER)#输入完之后回车
time.sleep(10)#等待页面加载完毕
finally:
browser.close()#关闭浏览器
运行完之后类似于在浏览器内部直接输入hello world进行查询