-1

我想从以下网站阅读赔率:http: //uk.wettportal.com/Soccer/England/Premier_League/Arsenal_FC_-_Everton_FC_963003.html

赔率是使用 ajax 动态加载的。源页面不包含赔率。是否有任何技术可以使用 php 获取此类页面的内容?

4

1 回答 1

1

如果 data-url 是固定的,您可以使用简单的 php one-liner 立即使用它:
$data = json_decode(file_get_contents('http://domain.com/data.json'));

如果 'ajax' 数据 url 不固定,您首先需要获取主机页面(上面的行减去 json_decode)并从中获取实际的数据链接。

注意:如果网站的作者正确地完成了他的工作,那么可能会采取一些措施来解决这个问题,例如:检查引荐来源网址、浏览器的 http 标头、会话 cookie 等。
这将使获取数据变得更加困难(永远不可能) .

在这种情况下,您将使用 CURL 或 php 的fsockopen(此处为文档)并模拟浏览器。
不要忘记 cookie 处理(因为该站点使用它!!!我嗅探了流量)以及可能是引荐来源网址(主机页面的 url)。也不要忘记X-Requested-With: XMLHttpRequest标题。


示例(针对您的情况):

从函数refresh_odds中可以看到这些数据 url 是如何构建的(我清理了格式,所以它很容易阅读):

var url = "/lib/ajax/getEventResult.php";
var data = "event_id=" + $("#event_id").val() 
         + "&partner=" + $("#partner").val() 
         + "&lang=" + $("#language").val();

var url = "/lib/ajax/getOddsTable.php";
var data = "partner=" + $("#partner").val() 
         + "&lang=" + $("#language").val() 
         + "&period=" + $("#period").val() 
         + "&betgame=" + $("#betgame").val() 
         + "&eventmode=" + $("#eventmode").val() 
         + "&event_id=" + $("#event_id").val() 
         + "&bettype=" + $("#bettype").val();

现在您知道隐藏的输入字段 ID 是什么,您的 php 脚本必须在主机页面中搜索才能构建实时数据 URL。


更新(根据您的评论)

奇数的标签可以:

$("#period").val("fulltime");
refresh_odds();

期间选项卡执行以下操作:

$("#period").val(period);
refresh_odds();

看看它是如何回到refresh_odds()...?

祝你好运

于 2013-04-12T16:52:35.973 回答