phantomjs python同时能运行多少个网页

当前访客身份:游客 [
当前位置:
发布于 日 15时,
昨天()在代码区看到一个生成站点快照的代码,看了半天才发现,作者仅仅贴出来业务代码,最核心的生成快照图片的代码反而没有给出来。&以前记得google搜索提供站点缩略图,那时候觉得好神奇,但是没有花时间去做深入的调研。昨天又遇到了,那就顺便调研下吧。才开始找到了wkhtmltopdf这款工具,这款工具的地址是:/p/wkhtmltopdf/。&这款工具集下有一个wkhtmltoimage,可以用来生成站点快照。才开始在基于xen的虚拟机上跑,操作系统是centos,各种问题,折腾到最后实在没精力折腾了。查到后来,看到老外一篇文章,发现wkhtmltoimage对于运行xen虚拟机的系统支持的并不好,具体情况可以参见这篇文章:http://blog.behance.net/dev/wkhtmltopdf-wkhtmltoimage-x-centos-x-xen-segfault-mania。放弃了wkhtmltoimage,继续找到了phantomjs和slimerjs,两款都是服务器端的js,简单说来,都是封装了浏览器解析引擎,不同是phantomjs封装的webkti,slimerjs封装的是Gecko(firefox)。&权衡利弊,决定研究下phantomjs,于是就用phantomjs实现了网站快照生成。phantomjs的项目地址是:http://phantomjs.org/代码涉及两个部分,一个是设计业务的index.php,另一个是生成快照的js脚本snapshot.js。代码比较简单,仅仅是实现了功能,没有做过多的修饰。代码分别如下所示:
代码片段(2)
1.&[代码][PHP]代码&&&&
if (isset($_GET['url']))
set_time_limit(0);
$url = trim($_GET['url']);
$filePath = "./cache/".md5($url).'.png';
if (is_file($filePath))
exit($filePath);
$command = "phantomjs/bin/phantomjs snapshot.js {$url} {$filePath}";
exec($command);
exit($filePath);
&!DOCTYPE html&
&meta charset="utf-8" /&
&meta name="viewport" content="width=device-width, initial-scale=1.0" /&
&meta name="keywords" content="" /&
&meta name="description" content="" /&
&title&快照生成&/title&
&script src="/jquery-1.8.3.min.js"&&/script&
margin: 0;
padding: 0;
padding: 20
margin: 20px 0 0;
width: 200
padding: 4px 2
#placeholder {
&form action="" id="form"&
&input type="text" id="url" /&
&button type="submit"&生成快照&/button&
&img src="" alt="" id="placeholder" /&
$(function(){
$('#form').submit(function(){
if (typeof($(this).data('generate')) !== 'undefined' && $(this).data('generate') === true)
alert('正在生成网站快照,请耐心等待...');
$(this).data('generate', true);
$('button').text('正在生成快照...').attr('disabled', true);
type: 'GET',
data: 'url=' + $('#url').val(),
success: function(data){
$('#placeholder').attr('src', data).show();
$('#form').data('generate', false);
$('button').text('生成快照').attr('disabled', false);
2.&[代码][JavaScript]代码&&&&
var page = require('webpage').create();
var args = require('system').
var url = args[1];
var filename = args[2];
page.open(url, function () {
page.render(filename);
phantom.exit();
开源中国-程序员在线工具:
相关的代码(2)
15回/13546阅
[JavaScript]
2回/1748阅
有演示地址嘛?
2楼:萌龙 发表于
引用来自“李惟”的评论有演示地址嘛?在这里 http://static.miaowu.cc/snapshot/
3楼:主编 发表于
很好,可以用于扩展分享到微博的功能,提供一个页面的缩略图。其实,如果能指定div生成图片就更有意思了。&
4楼:李惟 发表于
引用来自“萌龙”的评论引用来自“李惟”的评论有演示地址嘛?在这里 http://static.miaowu.cc/snapshot/挺好
5楼:ljz 发表于
引用来自“李惟”的评论引用来自“萌龙”的评论引用来自“李惟”的评论有演示地址嘛?在这里 http://static.miaowu.cc/snapshot/挺好chrome无法运行?
6楼:萌龙 发表于
引用来自“ljz”的评论引用来自“李惟”的评论引用来自“萌龙”的评论引用来自“李惟”的评论有演示地址嘛?在这里 http://static.miaowu.cc/snapshot/挺好chrome无法运行?回头测试下,应该没问题的。
7楼:李惟 发表于
引用来自“ljz”的评论引用来自“李惟”的评论引用来自“萌龙”的评论引用来自“李惟”的评论有演示地址嘛?在这里 http://static.miaowu.cc/snapshot/挺好chrome无法运行?Mac OS 10.8,chrome28,测试ok
8楼:西门飞 发表于
服务端JS?是node.js 吗
9楼:chan_jim 发表于
安装之后,执行一直提示[WARNING] phantomjs: cannot connect to X server ,
10楼:萌龙 发表于
引用来自“西门飞”的评论服务端JS?是node.js 吗确实是服务器端js,但是是phantomjs。现在服务器端的js真是百花齐放啊。
11楼:萌龙 发表于
引用来自“chan_jim”的评论安装之后,执行一直提示[WARNING] phantomjs: cannot connect to X server ,Q: 为什么我会得到这样的错误信息 phantomjs: cannot connect to X server? A: In PhantomJS 1.4 or earlier, X server is still needed. The workaround is to use Xvfb. Starting with PhantomJS 1.5, it is pure headless and there is no need to run X11/Xvfb anymore. 你可以检查下你的版本。
12楼:ljz 发表于
引用来自“萌龙”的评论引用来自“ljz”的评论引用来自“李惟”的评论引用来自“萌龙”的评论引用来自“李惟”的评论有演示地址嘛?在这里 http://static.miaowu.cc/snapshot/挺好chrome无法运行?回头测试下,应该没问题的。还是无法使用~~win7 x64下的chrome 28
13楼:ljz 发表于
引用来自“李惟”的评论引用来自“ljz”的评论引用来自“李惟”的评论引用来自“萌龙”的评论引用来自“李惟”的评论有演示地址嘛?在这里 http://static.miaowu.cc/snapshot/挺好chrome无法运行?Mac OS 10.8,chrome28,测试okwin7 x64下的chrome 28 测试失败~
14楼:萌龙 发表于
引用来自“ljz”的评论引用来自“李惟”的评论引用来自“ljz”的评论引用来自“李惟”的评论引用来自“萌龙”的评论引用来自“李惟”的评论有演示地址嘛?在这里 http://static.miaowu.cc/snapshot/挺好chrome无法运行?Mac OS 10.8,chrome28,测试okwin7 x64下的chrome 28 测试失败~我这边测试没有问题哎。这个页面只是个demo,并不是核心。你如果要看效果,可以换一个其他浏览器试试啊。
15楼:ljz 发表于
引用来自“萌龙”的评论引用来自“ljz”的评论引用来自“李惟”的评论引用来自“ljz”的评论引用来自“李惟”的评论引用来自“萌龙”的评论引用来自“李惟”的评论有演示地址嘛?在这里 http://static.miaowu.cc/snapshot/挺好chrome无法运行?Mac OS 10.8,chrome28,测试okwin7 x64下的chrome 28 测试失败~我这边测试没有问题哎。这个页面只是个demo,并不是核心。你如果要看效果,可以换一个其他浏览器试试啊。IE10 一样~呃~我自己研究研究 谢谢
16楼:李惟 发表于
引用来自“ljz”的评论引用来自“萌龙”的评论引用来自“ljz”的评论引用来自“李惟”的评论引用来自“ljz”的评论引用来自“李惟”的评论引用来自“萌龙”的评论引用来自“李惟”的评论有演示地址嘛?在这里 http://static.miaowu.cc/snapshot/挺好chrome无法运行?Mac OS 10.8,chrome28,测试okwin7 x64下的chrome 28 测试失败~我这边测试没有问题哎。这个页面只是个demo,并不是核心。你如果要看效果,可以换一个其他浏览器试试啊。IE10 一样~呃~我自己研究研究 谢谢可以把错误信息发上来的
17楼:ljz 发表于
引用来自“李惟”的评论引用来自“ljz”的评论引用来自“萌龙”的评论引用来自“ljz”的评论引用来自“李惟”的评论引用来自“ljz”的评论引用来自“李惟”的评论引用来自“萌龙”的评论引用来自“李惟”的评论有演示地址嘛?在这里 http://static.miaowu.cc/snapshot/挺好chrome无法运行?Mac OS 10.8,chrome28,测试okwin7 x64下的chrome 28 测试失败~我这边测试没有问题哎。这个页面只是个demo,并不是核心。你如果要看效果,可以换一个其他浏览器试试啊。IE10 一样~呃~我自己研究研究 谢谢可以把错误信息发上来的没有错误信息~~就是截不到图片~
18楼:郭振华oo 发表于
不错,可用,图片质量也挺好~~
当年也做过网站截图,当时没有封装浏览器内核的可用项目,只好用命令行调用浏览器去访问渲染指定网站,然后截取,效率那是相当的低下。
不禁感慨现在有了封装webkit的项目,怎么玩都行哈
19楼:傻逼 发表于
这个可以设置截图的字体吗? 很多中文字发虚啊
20楼:萌龙 发表于
引用来自“guozhenhua”的评论不错,可用,图片质量也挺好~~
当年也做过网站截图,当时没有封装浏览器内核的可用项目,只好用命令行调用浏览器去访问渲染指定网站,然后截取,效率那是相当的低下。
不禁感慨现在有了封装webkit的项目,怎么玩都行哈呵呵,你们真猛啊。。。 osc里面有人推荐了另外一款工具:CutyCapt 如果仅仅是进行截图,这个工具要更合适些。
开源从代码分享开始
萌龙的其它代码当前访客身份:游客 [
当前位置:
最近刚解除phantomJS,单页页面的内容会抓取了,但是如何抓取二级页面的内容,遇到一些问题不解?
我想达到的目的是,在第一页中抓取特定一些的url,根据这些url再进入二级页面抓取里面的内容。
不知道该采取怎样的方式
共有1个答案
<span class="a_vote_num" id="a_vote_num_
找到方法了吗 同求
更多开发者职位上
有什么技术问题吗?
类似的话题phantomJS和selenium如何爬取ajax跨域请求的网页?
各位知乎的大神们~小女子在写爬虫的时候遇到一些问题,实在没有头绪,真心求助各位~先说一下我的一点小思路。。&br&1、网站的特点是通过ajax加载的内容很多,而且在network中查看XHR对象也没有东西,所以应该是通过跨域jsonp访问的。。&br&2、由于要抓取的数据是先要点击个下拉菜单再加载出来的,通过抓包工具挨个查请求的文件,大致定位到了一个请求,查看的它的response发现是像乱码的东西。。感觉应该是j s文件混淆压缩的吧= =【补充一下JS文件的地址:&a href=&///?target=http%3A//te./render/renderAPIList.jsp%3Fattrs%3D0FA456A3%2CL0F4L3C1%2CZO1FcGJH%2CJ6TkcChI%2CHCEm2cI6%2C08F7hM5i%2C8dksuR_%2CYRHLp-jc%2Cpl6clDL0%2CHFn32cI6%2Cvf_x4Gjt%2C2XkzJryU%2CvNfnYBK6%2CTDoolO-H%2Cpk4QaDyF%2Cx0oSHP6u%2Cz4VVfNJo%2C5_VrVbqO%2CU1ur4rJN%2Cpx3FxFdF%2CxaSZV4wU%2CZZY89LZZ%2CZYCXZYHIRU%2CioperTTY%2Cer8Eevr%2Cha6ozyf%2Cd90e9bb%2CioperTTY%2CdDjWmcqr%2CtyuiyTTN%2CUN1Zr13I%2CcGlja1Vw%2C7b4bfd15%2CzxcvdTTY%2C456ghTTY%2CweqasTTN%26showAllCondition%3D1%26showBrandInfo%3D1%26showNonPrice%3D1%26showFullRoom%3D1%26showPromotion%3D1%26showTopHotel%3D1%26showGroupShop%3D1%26output%3Djson1.1%26v%3D0.7179%26requestTime%3D4%26mixKey%3D0f6f10d9166xBFW5hsmwLyu2lfZpN588%26requestor%3DKZ_LIST%26needBoss%3D1%26cityurl%3Dlijiang%26fromDate%3D%26toDate%3D%26limit%3D0%252C15%26fitted%3DCOUPLES_VACATION%26filterid%3D44c9f4d7-2f31-434c-843b-f09e12c249a0%26u%3DsI4pDDtOlYLHRsF-t6bCVczOz71-cGxpY2UoZC5sZW5ndGgtZSxlKTpbXSkpLG89bnVsbH1jYXRjnu9%26__jscallback%3DjQuery%26_%3D0& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&te./render&/span&&span class=&invisible&&/renderAPIList.jsp?attrs=0FA456A3,L0F4L3C1,ZO1FcGJH,J6TkcChI,HCEm2cI6,08F7hM5i,8dksuR_,YRHLp-jc,pl6clDL0,HFn32cI6,vf_x4Gjt,2XkzJryU,vNfnYBK6,TDoolO-H,pk4QaDyF,x0oSHP6u,z4VVfNJo,5_VrVbqO,U1ur4rJN,px3FxFdF,xaSZV4wU,ZZY89LZZ,ZYCXZYHIRU,ioperTTY,er8Eevr,ha6ozyf,d90e9bb,ioperTTY,dDjWmcqr,tyuiyTTN,UN1Zr13I,cGlja1Vw,7b4bfd15,zxcvdTTY,456ghTTY,weqasTTN&showAllCondition=1&showBrandInfo=1&showNonPrice=1&showFullRoom=1&showPromotion=1&showTopHotel=1&showGroupShop=1&output=json1.1&v=0.7179&requestTime=4&mixKey=0f6f10d9166xBFW5hsmwLyu2lfZpN588&requestor=KZ_LIST&needBoss=1&cityurl=lijiang&fromDate=&toDate=&limit=0%2C15&fitted=COUPLES_VACATION&filterid=44c9f4d7-2f31-434c-843b-f09e12c249a0&u=sI4pDDtOlYLHRsF-t6bCVczOz71-cGxpY2UoZC5sZW5ndGgtZSxlKTpbXSkpLG89bnVsbH1jYXRjnu9&__jscallback=jQuery&_=0&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& 】&br&&img src=&/a8eb8a6fce_b.jpg& data-rawwidth=&2012& data-rawheight=&688& class=&origin_image zh-lightbox-thumb& width=&2012& data-original=&/a8eb8a6fce_r.jpg&&&br&3、基于以上两点大概放弃了模拟ajax请求解析response的方法,想尝试phantomJS+selenium模拟浏览器操作的方法,但发现wait不到ajax完全加载后的页面,因为总也find不到我要点击的那个下拉框。。(这个下拉框貌似也是异步加载出来的,因为source源码中没有这个元素)&br&&br&所以这种情况有没有什么方法可以让phantomJS完全加载出我需要的内容呢?或者是不是因为混淆过的response它不能解析呢?(不过好像也不是吧,phantomJS和正常的浏览器内核是一样的吧。。?)不知道有木有表述清楚我的问题,真心求助各位啦~
各位知乎的大神们~小女子在写爬虫的时候遇到一些问题,实在没有头绪,真心求助各位~先说一下我的一点小思路。。1、网站的特点是通过ajax加载的内容很多,而且在network中查看XHR对象也没有东西,所以应该是通过跨域jsonp访问的。。2、由于要抓取的数据是先要点击个下拉菜单再加载出来的,通过抓包工具挨个查请求的文件,大致定位到了一个请求,查看的它的response发现是像乱码的东西。。感觉应该是j s文件混淆压缩的吧= =【补充一下JS文件的地址: 】…
按投票排序
谢邀。题主可以使用casperjs,也是基于phantomjs的一个工具,封装了许多方法,优化了语法糖。在casperjs中有很多方法处理异步问题,比如:waitForSelector('#btn',callback)
这个方法就是等到id为'btn'的元素渲染后触发回调。类似的方法还有很多,题主可以参考casperjs文档:casperjs的github仓库:
casper.start('http://yoursite.tld/', function() {
this.wait(1000, function() {
this.echo("I've waited for a second.");
casper.run();
等一下咯;
casper.start('http://www.google.fr/', function() {
this.capture('google.png', {
left: 100,
width: 500,
height: 400
你要在页面加载后,等待一段时间,比如5秒钟,因为异步请求的内容的加载需要时间
首先谢邀~第一次被邀请还有点小激动呢~1、通过你的描述和2里返回的内容,基本可以确认是JSONP方式请求的。2、JSONP可以通过network查看JS找到,可以把获取到的内容进行反混淆解密,试试看是不是混淆加密的,具体地址百度很多就不放了。3、因为没用过phantomJS和selenium,所以特地百度了一下,发现一个是类似NODEJS的服务器端测试工具,一个是浏览器插件型的客户端工具,不过百度phantomJS+selenium也可以查到结合使用的例子。一开始我猜测会不会是phantomJS只能抓取到初始代码,对异步后的操作无力,后来想想很多人需要使用的工具应该不会像IE这么丑陋,于是换成以下两种猜测:一、网站JS不兼容WebKit内核导致JS异步遇到异常不能执行,虽然可能性很小。二、异步有延迟,selenium操作的时机不对,这个可能性也很小,因为看你好像也手动用过。所以~如果你非要用phantomJS和selenium,我也帮不上什么~如果你主要目的是抓取内容,建议你还是试试解密返回的内容吧~
谢邀,不过在下才疏学浅,真不会这个。看完前面的,学习了。PhantomJS 抓取gbk页面乱码 有什么方法解决_百度知道
PhantomJS 抓取gbk页面乱码 有什么方法解决
提问者采纳
决办法就是安装字体用phantomjs去截取中文页面的网站可能会出现乱码的情况,也就是截图中中文的位置全是方框。在centos中执行:yum install bitmap-fonts bitmap-fonts-cj
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 phantomjs cmd运行 的文章

 

随机推荐