JS加载HTML后preg_match?

时间:2014-01-16 11:33:17

标签: javascript php jquery html preg-match

我希望使用preg_match从Vine配置文件页面中获取关注者值(例如:https://vine.co/u/906265806411804672)。页面源的唯一内容是加载HTML的javascript:

window.App = require('appkit/app').create();

但是,一旦javascript加载了HTML,我就可以看到代码:

<script id="metamorph-20-start" type="text/x-placeholder"></script> "73.1K"

当我使用preg_match找到73.1值时:

$vineUrl = @file_get_contents('https://vine.co/u/906265806411804672');    
preg_match('#<script id="metamorph-20-start" type="text/x-placeholder"></script> "(.*?)"#', $vineUrl, $followCount);

它不会搜索呈现的HTML,只搜索以HTML格式加载页面的JS。一旦页面完全呈现在HTML中,是否有任何方法可以在加载JS后使用preg_match,或者使用PHP替代方法来嗅探该值?

1 个答案:

答案 0 :(得分:1)

正如我在评论中已经写过的那样,JS是客户端,PHP服务器端。因此,如果您使用PHP获取URL,则JS永远不会被执行。

最好的方法是等到Vine发布API。到目前为止,Vine没有官方API。但是您可以使用一些非官方的API。但是,请记住,他们可以随时破解,您可能违反了Vine服务条款。

我发现的非正式API

有关API端点的说明(对于PHP和Python API),请参阅https://github.com/starlock/vino/wiki/API-Reference