nodejs后端 转 php,PHP+NodeJs后端给网站截图

news/2024/5/11 5:18:22/文章来源:https://blog.csdn.net/weixin_39603778/article/details/115648994

有些导航站提交网站后会把网站截图并且在详情页会附带网页截图,例如这个 博客大全:blogwe.com

挺好奇怎么实现的,所以了解到了这两个开源项目:Puppeteer 和 PuPHPeteer

注意:需要安装 NodeJs 8+ 的版本

设置 NodeJs 镜像(如果你是第一次安装 NodeJs):npm config set registry https://registry.npm.taobao.org --global

安装 Puppeteer:npm i puppeteer

安装 PuPHPeteer:npm install @nesk/puphpeteer

为了方便实现功能和测试,使用了 Laravel 8 进行安装该项目。

安装 PuPHPeteer:composer require nesk/puphpeteer

在 Laravel 8 安装 PuPHPeteer 后,创建一个控制器:php artisan make:controller ImageController

在路由 web.php 中引入(这是 Laravel 8 的新特性):use App\Http\Controllers\ImageController;

继续在路由写入:Route::get('create_image', [ImageController::class, 'create']);

在控制器引入:use Nesk\Puphpeteer\Puppeteer;

在控制器写入 create 方法后访问测试:public function create()

{

$puppeteer = new Puppeteer;

$browser = $puppeteer->launch();

$page = $browser->newPage();

$page->goto('https://www.bubaijun.com');

$page->screenshot(['path' => 'example.png']);

$browser->close();

}

此时访问的页面是空白的,因为没有 return ,打开 public 目录可以看到有一个 example.png 文件,该文件如下:

watermark

可以看到图片尺寸有点小,可以将 create 方法改成这样:public function create()

{

$puppeteer = new Puppeteer;

$browser = $puppeteer->launch();

$page = $browser->newPage();

$page->setViewport(['width' => 1920, 'height' => 1440]);

$page->goto('https://www.bubaijun.com');

$page->screenshot(['path' => 'example.png']);

$browser->close();

}

也就是在 newPage 方法后可以调用 setViewport 方法进行设置页面大小。

具体的相关文档:https://github.com/puppeteer/puppeteer/blob/main/README.md#usage

https://github.com/puppeteer/puppeteer/blob/v5.4.0/docs/api.md#pagesetviewportviewport

以上文档是 NodeJs 的,需要看懂后稍微修改在 PHP 进行调用。

最后说一下,截图所需的时间受影响的因素很多,所以最好放入队列运行。

截图的图片文件还挺大的,截图了一下 1920 * 1440 现在这个博客首页,图片文件是 916K. 可以适当使用一下压缩,博主用工具压缩后只有 344K.

截出来的图:

watermark

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_822352.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在桌面点击html文档跳转到指定网站

在windows桌面新建一个html文档&#xff0c;然后文档内容如下&#xff1a; <script language"javascript">location.replace("https://www.baidu.com"); </script> 然后点击百度.html&#xff0c;就会打开浏览器并跳转到百度。

C++] WAP GPRS 向WWW网站 提交POST GET 数据 实例

代码 ///接收程序ASP<%numrequest("num")passrequest("pass")setfsserver.CreateObject("Scripting.FileSystemObject")setfilefs.OpenTextFile(server.MapPath("http.txt"),8,True)file.writeline num"---""-"…

SEO图片测试,alt=ddd title= 就不显示alt 内容

转载于:https://www.cnblogs.com/avatar/archive/2011/07/14/2106614.html

使用HTML5,CSS3和jQuery增强网站用户体验

记 得几年前如果你需要添加一些互动元素到你的网站中用来改善用户体验&#xff1f; 是不是立刻就想到了flash实现&#xff1f;这彷佛年代久远的事了。使用现在最流行的web技术 HTML5&#xff0c;CSS3和jQuery&#xff0c;同样也可以实现类似的用户体验。而且使用这些特性将会比…

2011年回顾:改变游戏的20个HTML5网站

今年HTML5确实给我们带来了很大的冲击。HTML5 Doctors&#xff0c;Oli Studholme评选出了20个最佳网站&#xff0c;它们涵盖了语义、音频、客户端web apps、canvas以及SVG和WebGL&#xff0c;这些网站预示了未来web的发展方向。 对HTML5和web来说&#xff0c;今年是收获丰富的一…

如何获取网站服务器运行状态

在学习的过程中总要经历一些痛苦的过程才能达到想要达到的地方。前几天牛人给我出了一道题&#xff0c;说是让我写一段程序判断一个网站的服务器是否正常运行。本着我自己先仔细研究实在不行再问的原则我各种郁闷了好几天。 各种没头绪&#xff0c;虽然磕磕绊绊的找到了一个网址…

Myeclipse+Tomcat运行网站

1、新建网站项目 2、在Myeclipse中设置Tomcat路径 window-->preferences&#xff0c;在左侧的输入框中输入tomcat&#xff0c;回车。 3、运行项目 右键单击刚刚创建的项目 4、在浏览器中输入URL http://localhost:8080/FirstWebTest/ 即可见到刚刚创建的网页。

收藏网站制作常用经典ajax.prototype.javascript实例打包下载

ajax.prototype.javascript实例打包下载..不错不错&#xff0c;都是我喜欢的~。 保存在这里拉~。大家喜欢可以拿去下载。 点击下载&#xff1a;5右拖动--多选框控制显示和不显示列.rar 点击下载&#xff1a;ajax-FileUpload.rar 点击下载&#xff1a;ajax-tab.rar 点击下载&…

使用recon/domains-hosts/baidu_site模块,枚举baidu网站的子域

使用recon/domains-hosts/baidu_site模块&#xff0c;枚举baidu网站的子域 【实例3-1】使用recon/domains-hosts/baidu_site模块&#xff0c;枚举baidu网站的子域。具体操作步骤如下所示&#xff1a;本文选自Kail Linux渗透测试实训手册 &#xff08;1&#xff09;使用recon/do…

我的网站后台管理系统 - 权限系统的设计

直入正题&#xff0c;本文只谈思路&#xff0c;不谈具体代码及实现以目前我所遇到的权限需求&#xff0c;以及本人肤浅的见识&#xff0c;研究结果如下&#xff1a;后台的权限控制大概分为两类1. 我能干什么2. 我能干哪些我能干什么&#xff0c;决定了我能做的操作是什么&#…

网站重构之配置文件分解

最近赶上公司重构网站,架构组的同事为提高web部门的开发效率,总结出了一些不错的经验&#xff0c;本人也是直接受益者&#xff0c;为此用下面几篇文章来与大家分享。 这一篇&#xff0c;我想讨论的是网站配置文件问题。说到配置文件&#xff0c;我第一印象就是它的灵活性&#…

springboot创建一个新的项目(通过spring官方网站)

本文主要介绍如何通过spring官方网站创建一个spring boot的项目。 好&#xff0c;下面上货。 1、首先进入spring的网站https://start.spring.io/这个是一个偏向简洁默认的一个方式&#xff0c;也可以点击“switch to the full version”&#xff0c;那样能够看到所有配置的选项…

IronPython 个人网站样例----宝藏挖掘

IronPython for ASP.NET 的 CTP 已经发布两个多星期了&#xff0c;惭愧的是&#xff0c;因为工作繁忙&#xff0c;一直没有太多时间来学习。居然忽略了 Personal Web Site Starter Kit 的 IronPython 样例。幸亏了 Scott Guthrie 这篇博客:http://blog.joycode.com/scottgu/arc…

35个富有启发和美丽的红色网站案例

网站设计是设计师的具有挑战性的任务。&#xff0c;他们设计的网站&#xff0c;即他们应该选择什么颜色风格来进行网站设计&#xff0c;这是每一个网站设计最重要的部分。颜色总是定义您的网站的性质。 有各种颜色的网站&#xff0c;如蓝色&#xff0c;绿色&#xff0c;灰色&am…

AX 2012 安装EP时提示网站模板“AXSITEDEF#0”的文件或参数无效

问题 在Dynamics AX 2012 安装Enterprise Portal 时最后配置阶段提示错误&#xff0c;信息如下&#xff1a; The site /sites/DynamicsAx could not be created. The following exception occurred: 网站模板“AXSITEDEF#0”的文件或参数无效。 参数名: WebTemplate. 仅当Busi…

minify php,php开源系统-使用Minify来优化网站性能

1 对php网站进行了搭建&#xff0c;并完成一些对图片上传的基本功能&#xff0c;服务器数据库的操作等等2 完成 首个jquery 框架中静态模板中加入 实际的函数范例&#xff1b;并了解和掌握了 sizzle.js 框架的使用流程和机制&#xff1b;并成功的在本地apache服务器站点上进行引…

现实世界的Windows Azure:专访PrivacyCentral网站创始人、CEO Zoiner Tejada

作为现实世界Windows Azure博客系列中的一部分&#xff0c;我联系了PrivacyCentral网站创始人、CEO Zoiner Tejada&#xff0c;来探寻该公司是如何利用Windows Azure平台及Ruby语言来搭建其强大的在线隐私服务。点击这里来了解PrivacyCentral的成功案例。下面我们来看看Tejada先…

PHP网站运维必知必会,运维架构师能力要求,做好运维必知必会的4个技能

一名OPS架构师&#xff0c;学习能力占了主要一部分(其实其他行业包括任何事情等等这都是关键一点)。如果这块缺失&#xff0c;仅凭一些生产线的经验教训&#xff0c;而不去反思&#xff0c;并从中总结出更多的经验来&#xff0c;想成为一个架构师那都是不现实的。那么优秀的OPS…

IIS7 网站发布常见问题及解决方案小结

把这两天发布网站遇到了一些问题总结了一下&#xff0c;希望对大家有用&#xff01; 1、不是有效的Win32位应用程序 &#xff1a; 解决方案&#xff1a; 1、进入应用程序池》选中网站》点击右侧”高级设置“》将运行32位选项改为"True" 3、在IIS如何修改.NET FrameWo…

织梦网站服务器 开启服务,WEB服务器启用了OPTIONS方法

漏洞名称&#xff1a;WEB服务器启用了OPTIONS方法危险等级&#xff1a;★☆☆☆☆(轻危)漏洞类型&#xff1a;配置错误披露时间&#xff1a;2015-09-14漏洞描述&#xff1a;攻击者可利用options方法获取服务器的信息&#xff0c;进而准备进一步攻击。解决方案&#xff1a;修改配…