小编给大家分享一下Laravel中如何使用操纵采集异步加载的网页内容,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!
采集网页内容是一项很常见的需求,比较传统的静态页面,旋度就能搞的定。但如果页面中有动态加载的内容,比如有些页面里通过ajax加载的文章正文内容,又如果有些页面加载完成后进行了一些额外处理(图片地址替换等等……)而你想采集这些处理过后的内容。那么牛逼闪闪的卷发也束手无策了。
做过类似需求的人可能会说,老铁,上PhantomJS啊!
没错,这是一个办法,而且在相当长的时间里PhantomJS是为数不多的能解决这类需求的工具里的佼佼者。
但今天这里要介绍的是一个后来居上的工具,操纵,它是随着Chrome无头技术兴起而快速发展起来的。而且非常关键的是,操纵由Chrome的官方团队开发和维护,可以说相当靠谱了!
操纵木偶的人是一个js包,要想在Laravel中使用,得借助于另一神器spatie/browsershot。
<强>安装强>
安装spatie/browsershot
browsershot是一个作曲家包,出自于大神团队spatie
,美元composer require spatie/browsershot
安装操纵木偶的
,美元npm 小姐:puppeteer ——保存
也可以全局安全操纵木偶的人但就个人经验而言,在项目中安装是比较推荐的做法,因为这样不同项目不会同时受全局安装的操纵木偶的影响,此外项目中安装也方便使用phpdeployer进行升级(phpdeploy升级时不会影响线上项目运行,要知道升级/安装操纵可是很费时的,有时候还不能保证一次成功)。
安装操纵时会下载chromium浏览器,鉴于咱特殊国情,很有可能出现无法下载的情况,对此,就请大家各显神通吧……
<强>使用强>
以采集今日头条手机版页面文章内容为例。
use spatie \ browsershot \ browsershot; public function  getBodyHtml () { ,,,newsUrl 美元;=,& # 39;https://m.toutiao.com/i6546884151050502660/& # 39;; ,,,, ,,,html 美元;=,Browsershot: url (newsUrl美元) ,,,,,,,→windowSize (480,, 800) ,,,,,,,→userAgent (& # 39; Mozilla/5.0, (Linux;, Android 6.0;, Nexus 5,构建/MRA58N), AppleWebKit/537.36, (KHTML, like 壁虎),Chrome/63.0.3239.132 Mobile Safari/537.36 & # 39;) ,,,,,,,→移动() ,,,,,,,()→联系 ,,,,,,,→bodyHtml (); ,,,\日志:信息(html); }
运行后可以在日志中看到如下内容(截图中只是其中部分)
此外,也可以将页面保存为图片或PDF文件。
use Spatie \ Browsershot \ Browsershot; public function  getBodyHtml () { ,,,newsUrl 美元;=,& # 39;https://m.toutiao.com/i6546884151050502660/& # 39;; ,,,, ,,,Browsershot: url (newsUrl美元) ,,,,,,,→windowSize (480,, 800) ,,,,,,,→userAgent (& # 39; Mozilla/5.0, (Linux;, Android 6.0;, Nexus 5,构建/MRA58N), AppleWebKit/537.36, (KHTML, like 壁虎),Chrome/63.0.3239.132 Mobile Safari/537.36 & # 39;) ,,,,,,,→移动() ,,,,,,,()→联系 ,,,,,,,→setDelay (1000) ,,,,,,,→保存(public_path(& # 39;图像/toutiao.jpg& # 39;)); }
图片里那些框与系统字体有关。代码中使用了一个setDelay()方法,是为了让内容加载完成后再进行截的图,简单粗暴,可能不是最好的解决办法。
<强>可能出现的问题强>
系统得支持铬浏览器,当然现在绝大部分浏览器是支持的,要不然也没法,还是用PhantomJS吧。
项目中安装了操纵后调用时有可能出现权限问题,这就需要对项目下/node_modules/操纵木偶的人目录赋予适当的权限。
以上是“Laravel中如何使用操纵采集异步加载的网页内容”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!