由于目前最新的SeleniumE经放弃PhantomJs,所以大家在安装时首先要查看下你所安装的Selenium版本信息,在命令行(终端)中输入以下指令来查看Selenium的版本信息:
pip show selenium
如果发现你的版本248.0,需要执行以下操作进行卸载重装Selenium
(1) pip uninstall selenium
(2) pip install selenium==2.48.0
对于安装PhantomJS的方式,书本上已有Windows系统的安装过程,下面主要介绍Liunx系统的安装过程:
(1)官网下载http: //phantomjs . org/ download.html
(2) 解压(注意文件名可能会根据系统不同而改变) tar-xvf phantomjs-2.1.1-linux-x86 _64. tar .bz2
(3)移动到指定目录下同时重命名: sudo my phantomjs-2.1.1-1inux-x86_ 64 /usr/1oca1/ share/ phantomjs
(4)建立链接: **
In-s/usr/1pca1/share/phantomjs/bin/phantomjs /usr/1oca1/bin/ phantomjs**
下面以爬取人民邮电出版社页面(URL: https://www.ptpress.com.cn/ )内容进行一组对比测试:
#常规使用requests库
import requests
response=requests.get("https://www. ptpress. com. cn/")
print(response.text)
结果只有HTML框架,并未爬取到任何内容
#使用selenium+PhantomJS
from selenium import webdriver
phantomjs=webdriver.PhantomJS()
phantomjs.get("https://www. ptpress. com. cn/")
print(phantomjs.page_source)
结果可以显示HTML框架里的内容
通过以上两个案例的实际对比,可以非常明显的发现,使用常规方式爬取的页面中无实际内容。其实,以前我们所学习的爬虫如果直接去爬取页面,通常只能正常获取静态页面,对于动态页面的内容则很难获取。
Tips小技巧:
怎么区别静态页面和动态页面?
在Chrome开发者工具中对比查看"Elements”和“Sources”两处的HTML内容是否致,如果内容一致则代表该网页为静态页面;否则就是动态页面。
特别说明
在最开始已经说过,selenium已经放弃PhantomJS,建议使用火狐或者谷歌无界面浏览器。
那么下面将主要介绍谷歌无界面刘览器的安装与使用方法,对于火狐的安装使用方法请人家自行百度或参考此网页:
https://blo/ csn.nt/01058168ariceletails79749149
首先需要安装selenim.此时的selenium可以不需要限制版本,可以直接安装最新的版本!
其次本地安装Chrome浏览器, [非常关键]同时需要配置chromedriver驱动器文件,chromedriver的下载地址:
https://chromedriver.storage.googleapis.com/index.html
具体步骤如下:
(1) 获取chrome浏览器的版本信息,下载对应版本的ChromeDriver;
(2)解压缩下载的ChromeDriver文件;
(3)将解压后的文件chromedriver复制到/usr/bin目录下,并设置其系统权限为755。
尝试使用Selenium+Chrome,示例如下:
from selenium import webdriver
chrome=webdriver.Chrome()
chrome.get("https://www.ptpress.com.cn/")
print(chrome.page_source)
运行后会发现你的系统会自动打开谷歌浏览器并自动加载页面
以操作百度搜索页面为例进行简单演示。要求在页面的搜索框中自动填写关键词并点击搜素进行查询
from selenium import webdriver
chrome=webdriver.Chrome()
chrome.get("https://www.baidu.com")
chrome.find_element_by_id("kw").send_keys("红花")
chrome.find_element_by_id("su").click()
print(chrome.page_source)