phantomjs

PhantomJS学习--phantomjs入门教程

删除回忆录丶 提交于 2020-03-02 22:42:58
PhantomJS 来自 《JavaScript 标准参考教程(alpha)》 ,by 阮一峰 PhantomJS官方API 目录 概述 REPL环境 webpage模块 open() evaluate() includeJs() render() viewportSize,zoomFactor onResourceRequested onResourceReceived system模块 应用 过滤资源 截图 抓取图片 生成网页 参考链接 重要说明:本教程已经搬迁,此处不再维护,请访问新网址: wangdoc.com/javascript 。 概述 有时,我们需要浏览器处理网页,但并不需要浏览,比如生成网页的截图、抓取网页数据等操作。 PhantomJS 的功能,就是提供一个浏览器环境的命令行接口,你可以把它看作一个“虚拟浏览器”,除了不能浏览,其他与正常浏览器一样。它的内核是WebKit引擎,不提供图形界面,只能在命令行下使用,我们可以用它完成一些特殊的用途。 PhantomJS是二进制程序,需要 安装 后使用。 $ npm install phantomjs -g 使用下面的命令,查看是否安装成功。 $ phantomjs --version REPL环境 phantomjs提供了一个完整的REPL环境,允许用户通过命令行与PhantomJS互动。键入phantomjs

PhantomJS安装及快速入门教程

江枫思渺然 提交于 2020-03-02 22:39:25
本文为大家讲解的是一个PhantomJS安装方法,及快速入门教程,感兴趣的同学参考下。 这里有新鲜出炉的PhantomJS教程,程序狗速度看过来! PhantomJS PhantomJS 是一个基于WebKit的服务器端 JavaScript API。它全面支持web而不需浏览器支持,其快速,原生支持各种Web标准: DOM 处理, CSS 选择器, JSON, Canvas, 和 SVG。PhantomJS可以用于页面自动化,网络监测,网页截屏,以及无界面测试等。 本文为大家讲解的是一个PhantomJS安装方法,及快速入门教程,感兴趣的同学参考下。 PhantomJS 是一个基于WebKit的服务器端 JavaScript API。它全面支持web而不需浏览器支持,其快速,原生支持各种Web标准: DOM 处理, CSS 选择器, JSON, Canvas, 和 SVG。PhantomJS可以用于页面自动化,网络监测,网页截屏,以及无界面测试等。 一、安装 安装包下载地址: http://phantomjs.org/download.html ,包括Windows,Mac OS,Linux版本,自行选择对应 版本下载解压即可( 为方便使用,可自已为phantomjs设置环境变量 ),其中带有一个example文件夹,里面有很多已经写好的代码供使用

python爬虫之selenium、phantomJs

蹲街弑〆低调 提交于 2020-03-02 20:01:18
图片懒加载技术 什么是图片懒加载技术 图片懒加载是一种网页优化技术。图片作为一种网络资源,在被请求时也与普通静态资源一样,将占用网络资源,而一次性将整个页面的所有图片加载完,将大大增加页面的首屏加载时间。为了解决这种问题,通过前后端配合,使图片仅在浏览器当前视窗内出现时才加载该图片,达到减少首屏图片请求数的技术就被称为“图片懒加载”。 如何实现图片懒加载技术 在网页源码中,在img标签中首先会使用一个“伪属性”(通常使用src2,original......)去存放真正的图片链接而并非是直接存放在src属性中。当图片出现到页面的可视化区域中,会动态将伪属性替换成src属性,完成图片的加载。 如何破解图片懒加载技术 其实很简单,在对标签属性进行定位的时候,仔细观察它真正的属性进行提取。 例如: import requests from lxml import etree def main(): responses = requests.get(url=url, headers=headers) coding = responses.apparent_encoding responses.encoding = coding res_text = responses.text # 创建etree对象 tree = etree.HTML(res_text) div_lst = tree

爬虫框架之selenium

假如想象 提交于 2020-03-02 20:00:53
Selenium 一、概述 Web自动化测试工具,可以运行在浏览器,根据指令操作浏览器 只是工具,必须与第三方浏览器结合使用 安装: Linux: sudo pip3 install selenium Windows: python -m pip install selenium phantomjs浏览器 定义:无界面浏览器(又称无头浏览器),在内存中进行页面加载,高效 安装(phantomjs、chromedriver、geckodriver) Windows: 1、下载对应版本的phantomjs、chromedriver、geckodriver 2、把chromedriver.exe拷贝到python安装目录的Scripts目录下(添加到系统环境变量) # 查看python安装路径: where python 3、验证 cmd命令行: chromedriver # 下载地址 # 查看浏览器版本:右上角-帮助-关于google Chrome # 网站中查看对应版本(notes.txt) chromedriver : 下载对应版本 http://chromedriver.storage.googleapis.com/index.html Linux: 1、下载后解压 tar -zxvf geckodriver.tar.gz 2、拷贝解压后文件到 /usr/bin/ (添加环境变量

可视化前端测试

假装没事ソ 提交于 2020-03-01 14:02:38
背景 相信进行过前端开发的同学都知道,前端测试不仅仅涉及到功能的测试,而且也需要考虑到界面样式测试、多浏览器兼容性测试、性能测试。本文主要讨论分析目前前端测试的现状,并讨论目前流行的测试工具,下篇文章将会介绍工具的使用方法 前端测试分类 前端测试主要分三大方向测试,而这三大方向也分很多小方向测试,首先简单的介绍每个方向的概念 界面样式测试 固定界面样式测试:主要针对文字内容不变的区域,例如页面的页头,页脚这类结构、内容不变的区域,而测试一般通过截图对比解决。 结构不变界面样式测试:主要针对结构不变的区域,例如新闻区域这类结构不变,内容变化的区域,这类测试一般通过DOM元素对比解决。 计算样式测试:主要针对计算样式不变的区域,这类测试一般通过比较计算样式解决,但是这种测试不推荐,因为测试成本比较大。 功能测试 服务器数据预期测试:主要针对用户在前端界面进行某种操作后,提交数据给后台后,测试后台能否返回预期的数据 界面功能测试:主要针对用户在前端界面进行某种交互性操作后,测试能否获取预期的功能、界面交互 多浏览器测试 多浏览器测试:基于界面样式测试、功能测试的基础上来进行不同浏览器的的测试。 性能测试 白屏时间:用户浏览器输入网址后至浏览器出现至少1px画面为止。 首屏时间:用户浏览器首屏内所有的元素呈现所花费时间。 用户可操作时间(dom ready) :网站某些功能可以使用的时间。

vue针对搜索引擎做SEO优化

独自空忆成欢 提交于 2020-02-28 02:22:52
先把几个方法放出来: 1.SSR服务器渲染; 2.静态化; 3.预渲染prerender-spa-plugin; 4.使用Phantomjs针对爬虫做处理。 首先复习一下SEO: 搜索引擎 优化(Search engine optimization,简称SEO),指为了提升网页在搜索引擎自然搜索结果中(非商业性推广结果)的收录数量以及排序位置而做的优化行为,是为了从搜索引擎中获得更多的免费流量,以及更好的展现形象。 vue对seo太不友好了,单页面SPA应用就是实时渲染的,爬虫都爬不到,我在做完一个vue写的官网的时候,老板突然说要seo,我懵逼了,所以被迫营业找了一下优化方法。 1. SSR: 这个vue的官方有一个文档( 官方地址 ),但是 对Vue版本有要求,对服务器也有一定要求,需要支持nodejs环境,其他环境也可以,代码又要重新写一遍。 使用SSR权衡之处: 开发条件所限,浏览器特定的代码,只能在某些生命周期钩子函数 (lifecycle hook) 中使用;一些外部扩展库 (external library) 可能需要特殊处理,才能在服务器渲染应用程序中运行; 环境和部署要求更高,需要Node.js server 运行环境; 高流量的情况下,请准备相应的服务器负载,并明智地采用缓存策略。 优势: 更好的 SEO,由于搜索引擎爬虫抓取工具可以直接查看完全渲染的页面;

Batch screenshots with phantom for nodejs

被刻印的时光 ゝ 提交于 2020-02-25 13:10:06
问题 I am desperately trying to process something like 200 screenshots in a single shot, my first attempt was to follow the guidelines with a simple script invoked 200 times, phantom.create() .then(function(instance) { console.log("1 - instance") phInstance = instance; return instance.createPage(); }) .then(function(page) { console.log("2 - page") sitepage = page; return page.open(url); }) .then(function(status) { console.log("3 - render") sitepage.property('clipRect', {top: 0, left: 0, width:3000

Batch screenshots with phantom for nodejs

房东的猫 提交于 2020-02-25 13:09:59
问题 I am desperately trying to process something like 200 screenshots in a single shot, my first attempt was to follow the guidelines with a simple script invoked 200 times, phantom.create() .then(function(instance) { console.log("1 - instance") phInstance = instance; return instance.createPage(); }) .then(function(page) { console.log("2 - page") sitepage = page; return page.open(url); }) .then(function(status) { console.log("3 - render") sitepage.property('clipRect', {top: 0, left: 0, width:3000

create a post request using poltergeist and capybara

杀马特。学长 韩版系。学妹 提交于 2020-02-24 12:01:32
问题 I'm transitioning from Capybara backed by the default Rack driver to Capybara backed by Poltergeist. For frustrating reasons, I need to manipulate session data before loading a page. But I couldn't figure out how to manipulate the session directly with the Rack driver, so I Capybara.current_session.driver.submit :post, "/current_search", {:session => :data } Unfortunately, the Poltergeist driver object has no submit method, as the Rack driver had. There are three possibilities: How do I

phantomjs的使用

非 Y 不嫁゛ 提交于 2020-02-23 19:07:32
PhantomJS是一个无界面的,可脚本编程的WebKit浏览器引擎。它原生支持多种web 标准:DOM 操作,CSS选择器,JSON,Canvas 以及SVG,同时也提供了处理文件I/O的操作,从而使你可以向操作系统读写文件等。PhantomJS的用处可谓非常广泛,诸如网络监测、网页截屏、无需浏览器的 Web 测试、页面访问自动化等。 1.安装 phantomjs是完全开源的软件,可以直接下载源码编译后安装,也可以直接下载官网上编译好的文件安装。 各平台下的安装文件包地址: windows https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-windows.zip Mac os https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-macosx.zip Linux https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2 下载安装包完毕后,直接解压即可。安装完成之后命令行输入 phantomjs -v 后如果出现版本号即为安装成功。 2.常用的内置对象 1.system:获得系统操作对象,包括命令行参数