引用文段:
链接:https://www.jianshu.com/p/0254391918f7

网页渲染可分为服务端渲染和客户端渲染,前者是指你在浏览器地址栏输入一个网址,Web服务器处理请求过程就将所有需要呈现的html元素都构造好了,浏览器收到响应就直接render出页面,客户端工作量少;后者是指Web服务器仅仅将必要的信息作为响应传到浏览器,浏览器需要根据响应进行二次处理,比如ajax请求,再根据ajax请求的结果构造html。

urllib不具备js执行能力,自然不能模拟浏览器执行js请求ajax等效果,于是,所谓无头浏览器phontmJs就出现了,借助这个工具可以模拟webkit执行,还可以包含更多js库比如jQuery等对页面的js执行进行扩展

第一个phantomjs程序:
在E盘下建立文档,m.js
var page = require('webpage').create();
phantom.outputEncoding="gbk"; #设定字符集类型
page.open('http://music.163.com/', function(status) {console.log("Status: " + status);if(status === "success") {console.log(page.content);#打印phantomJS处理后的页面内容}phantom.exit();
});

然后在E盘下(m.js所在目录)打开cmd,执行

phantomjs m.js

会打印出网易音乐的页面内容:

也可以将请求页面截图保存:

var page = require('webpage').create();
page.open('http://music.163.com/', function(status) {console.log("Status: " + status);if(status === "success") {page.render('music.png');}phantom.exit();
});

文件会被保存在m.js所在目录下

转载于:https://www.cnblogs.com/10sxluo/p/10273018.html

phantomJs原理相关推荐

  1. python爬虫bilibili_python爬虫下载Bilibili番剧弹幕

    本文绍如何利用python爬虫下载bilibili番剧弹幕. 准备: python3环境 需要安装BeautifulSoup,selenium包 phantomjs 原理: 代码: # -*- cod ...

  2. 使用PhantomJS实现网页截图服务

    使用PhantomJS实现网页截图服务 2015-12-12来源:Java教程人气:99 这是上半年遇到的一个小需求,想实现网页的抓取,并保存为图片.研究了不少工具,效果都不理想,不是显示太差了(Ca ...

  3. ruby + phantomjs 自动化测试 - GA

    说起测试GA,真是一件枯燥乏味,重复性很高的工作,那么为什么我们不使用自动化测试代替它呢,显然,很多公司的产品迭代太快,ga也变化的比较频繁,但是确保ga工作正常,对于其他部门的工作是有很大帮助的,由 ...

  4. 深入理解浏览器原理和架构|硬核

    本文用47张图带你了解「浏览器的发展史」.「浏览器的架构」.「浏览器的基本原理」以及 「浏览器的其它小知识」 ???? 正文开始 浏览器的主要功能就是向服务器发出请求,在浏览器窗口中展示HTML文档. ...

  5. 爬虫教程( 5 ) --- Selenium 与 PhantomJS

    1. Selenium 中式读法:[ 瑟林捏幕 ] Selenium( selenium 中文网:http://www.selenium.org.cn/ )是一个强大的网络数据采集工具,最初是为了网站 ...

  6. 【Vue.js源码解析 一】-- 响应式原理

    前言 笔记来源:拉勾教育 大前端高薪训练营 阅读建议:建议通过左侧导航栏进行阅读 课程目标 Vue.js 的静态成员和实例成员初始化过程 首次渲染的过程 数据响应式原理 – 最核心的特性之一 准备工作 ...

  7. vue 多个回调_Vue 进阶面试必问,异步更新机制和 nextTick 原理

    vue已是目前国内前端web端三分天下之一,同时也作为本人主要技术栈之一,在日常使用中知其然也好奇着所以然,另外最近的社区涌现了一大票vue源码阅读类的文章,在下借这个机会从大家的文章和讨论中汲取了一 ...

  8. XSS原理dvwaxssvalidator使用

    渗透COP之XSS原理&测试案例 1.什么是XSS 跨站脚本(Cross Site Scripting,XSS)是一种经常出现在web应用程序中的计算机安全漏洞.攻击者利用网站漏洞把恶意的代码 ...

  9. [Python爬虫] 一、爬虫原理之HTTP和HTTPS的请求与响应

    一.HTTP和HTTPS HTTP协议(HyperText Transfer Protocol,超文本传输协议):是一种发布和接收 HTML页面的方法. HTTPS(Hypertext Transfe ...

最新文章

  1. R和Python谁更好?这次让你「鱼与熊掌」兼得
  2. 如何取消button的点击特效_如何衡量一个人的 JavaScript 水平?
  3. Redis-17Redis内存回收策略
  4. python3精要(7)-集合,集合运算,集合解析
  5. [go]---从java到go(02)---一个简单的handler模式的实现
  6. 005---基于UDP的套接字
  7. JAVA Long String类型之间的转换
  8. Javascript特效:瀑布流
  9. Linux 内核第一宏
  10. unity 引用using 空间 变量声明
  11. 查看服务器阵列卡型号6,怎么查看 dell 阵列卡型号#如何通过服务器自检画面的信息查看当前阵列卡的型号...
  12. 游戏任务系统设计思路
  13. 多实例下的定时任务如何避免重复执行——分布式定时任务
  14. 请求响应数据?Controler层注解!
  15. linux实验二文件与文件夹操作
  16. 聚焦安防应用 6 6华强与您相约郑州五洲酒店
  17. Flutter百度地图定位插件与地理围栏插件冲突问题
  18. WINDOWS系统文件祥解
  19. 004-python-列表、元组、字典
  20. sinx/x的极限为什么是1_lim(x趋向0)sinx/x为什么等于1?

热门文章

  1. MAX535 单路13位DAC 模拟SPI驱动
  2. html网页响应时间调试,HTML5 使用performance.now衡量Webworker的响应时间
  3. 在职研究生和全日制研究生的区别_“在职研究生”与“全日制研究生”有什么区别?...
  4. PHP-Windows下搭建PHP-MSF环境【原创】
  5. CentOS6.8下安装memcached并设置开机自启动
  6. 【转】使用Jmeter针对ActiveMQ JMS Point To Point压力测试
  7. 【宋红康程序思想学习日记3】杨辉三角
  8. 文件上传简介1---上传到指定的目录
  9. tomcat原理,一个客户端请求的处理过程
  10. linux内核模块编写,Linux内核模块编程