Python爬虫之PhantomJS和handless的使用详解
1、PhantomJS的使用
PhantomJS 简介
PhantomJS 是一个基于Webkit的“无界面”(headless)浏览器,它会把网站加载到内存并使用webkit来编译解释执行页面上的JavaScript代码,由于不进行css和gui渲染、不展示图形界面,所以运行起来比完整的浏览器要高效。
如果把 Selenium 和 PhantomJS 结合在一起使用,就能实现一个能力非常强大的网络爬虫了,这个爬虫可以处理JavaScript、Cookie、headers,以及任何我们真实用户需要做的事情。
PhantomJS 下载
下载方式:PhantomJS 只能从它的官方网站下载,因为 PhantomJS 是一个功能完善的无界面浏览器而并非一个 Python 库,所以 PhantomJS 不像 Python 的其他库一样使用 pip 命令安装。
使用方式:下载 PhantomJS 压缩包后解压得到 phantomjs.exe,把 phantomjs.exe 放到 python 当前项目目录下,通过Selenium调用PhantomJS来直接使用。
PhantomJS 的使用
代码实例:
import time from selenium import webdriver path = 'phantomjs.exe' # 通过Selenium的webdriver调用PhantomJS driver = webdriver.PhantomJS(path) driver.get("http://www.baidu.com/") # 获取页面名为 wrapper的id标签的文本内容 data = driver.find_element_by_id("wrapper").text # 打印数据内容 print(data) # 打印页面标题 "百度一下,你就知道 print(driver.title) # 生成当前页面快照并保存 driver.save_screenshot("baidu.png") time.sleep(2) # 定位百度搜索输入框,输入字符串"王维家" driver.find_element_by_id("kw").send_keys("王维家") # 清除输入框的内容 driver.find_element_by_id("kw").clear() # 定位百度搜索输入框,输入字符串"毛不易" driver.find_element_by_id("kw").send_keys("毛不易") # 定位百度搜索按钮并点击 driver.find_element_by_id("su").click() # 获取新的页面快照并保存 driver.save_screenshot("maobuyi.png") # 输出网页渲染后的源代码 # print(driver.page_source) # 清除输入框的内容 driver.find_element_by_id("kw").clear() # 输入框重新输入内容 “福禄寿” driver.find_element_by_id("kw").send_keys("福禄寿") # 提交搜索 driver.find_element_by_id("kw").submit() time.sleep(2) # 生成新的页面快照 driver.save_screenshot("福禄寿.png") # 获取当前url print(driver.current_url) # 关闭当前页面,如果只有一个页面,会关闭浏览器 driver.quit()
执行结果:
新闻hao123地图贴吧视频图片网盘更多
设置登录
换一换
中国迈入创新型国家行列
3全年粮食夺取丰收有支撑
1鼓励生三孩 17部门联合发文
热
431省份昨日新增本土“566+2322”
2要求4省完成财政上缴任务有何深意?
热
5孩子高铁上吵闹 乘客提醒被家长怼
关于百度About Baidu使用百度前必读帮助中心
百度一下,你就知道
https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=%E7%A6%8F%E7%A6%84%E5%AF%BF&fenlei=256&rsv_pq=b11a858d007a15c5&rsv_t=498aJh0m9WbICve1EXCXZCzDY41aZM9AIwgaD3J2LU5gCAb3ULnF%2BVi1DgJU&rqlang=en&rsv_enter=0&rsv_dl=tb&rsv_btype=t&inputT=28&rsv_sug3=9&rsv_sug4=29&rsv_jmp=fail
2、Chrome handless
Chrome handless 模式:由于新版本的 selenium 已经弃用 PhantomJs,PhantomJs也停止了更新和维护,所以推荐使用谷歌的Chrome handless模式(无头模式),这是一款无界面的谷歌浏览器,可以让使用者在不打开UI界面的情况下使用Chrome浏览器,并且运行效果与真实的Chrome浏览器一样,但是性能更高。
使用要求:
- Windows系统chrome版本>=60
- Linux系统chrome版本>=59
- python版本>=3.6
- selenium>=3.4
- chromeDriver>=2.31
handless 使用实例
代码实例:
from selenium import webdriver from selenium.webdriver.chrome.options import Options import time # 配置 handless 方法 def create_handless(): # 创建一个参数对象,用来控制chrome以无界面模式打开 chrome_options = Options() chrome_options.add_argument('--headless') chrome_options.add_argument('--disable-gpu') # chrome浏览器文件路径 path = r'.C:\Program Files\Google\Chrome\Application\chromedriver.exe' chrome_options.binary_location = path # 创建浏览器对象 browser = webdriver.Chrome(chrome_options=chrome_options) return browser # 访问百度 url = 'http://www.baidu.com/' browser = create_handless() browser.get(url) time.sleep(2) browser.save_screenshot('baidu.png') # 截取图片 browser.quit()
到此这篇关于Python爬虫之PhantomJS和handless的使用详解的文章就介绍到这了,更多相关Python的PhantomJS和handless内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
python3 numpy中数组相乘np.dot(a,b)运算的规则说明
这篇文章主要介绍了python3 numpy中数组相乘np.dot(a,b)运算的规则说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2021-03-03python中sklearn库predict及python sklearn linearmodel(
Scikit-learn(sklearn)是机器学习中常用的第三方模块,对常用的机器学习方法进行了封装,包括回归(Regression)、降维(Dimensionality Reduction)、分类(Classfication)、聚类(Clustering)等方法,今天小编给大家分享python中sklearn库predict的问题,感兴趣的朋友一起看看吧2024-02-02python GUI库图形界面开发之PyQt5动态(可拖动控件大小)布局控件QSplitter详细使用方法与实例
这篇文章主要介绍了python GUI库图形界面开发之PyQt5动态(可拖动控件大小)布局控件QSplitter详细使用方法与实例,需要的朋友可以参考下2020-03-03
最新评论