【问题标题】:preg_match after JS has loaded HTML?JS加载HTML后的preg_match?
【发布时间】:2014-01-16 11:33:17
【问题描述】:

我希望使用 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。一旦加载了 JS,是否有任何方法可以 preg_match 或在页面完全以 HTML 呈现后嗅探该值的 PHP 替代方法?

【问题讨论】:

  • JS 是客户端,PHP 服务器端。所以如果你用 PHP 获取 URL,JS 永远不会被执行。
  • @Reeno 我有什么选择?用 JS 获取和 preg_match 吗?
  • 使用 JS 你不能获取另一个页面。有一些解决方案,但它们非常复杂(如phantomjs.org)
  • 最好的方法是等到 Vine 发布 API :)
  • 你看过我在下面发布的 API 了吗?

标签: javascript php jquery html preg-match


【解决方案1】:

正如我在 cmets 中所写的,JS 是客户端,PHP 是服务器端。因此,如果您使用 PHP 获取 URL,则 JS 永远不会被执行。

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

我发现的非官方 API 是

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

【讨论】:

    猜你喜欢
    • 2019-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-19
    • 1970-01-01
    相关资源
    最近更新 更多