有没有办法抓取使用php

时间:2018-05-02 03:05:35

标签: javascript php

我正在尝试启动网络抓取工具。以下是起始代码

<?php
$start = "https://www.yocale.com/Search?latitude=29.748093&longitude=-95.37127699999996";

function follow($url)
{
  $content = file_get_contents($url);
  $content = str_replace('src="/', 'src="https://www.yocale.com/', $content);
  $content = str_replace('href="/', 'href="https://www.yocale.com/', $content);
  $content = str_replace('src="https://www.yocale.com//maps.googleapis.com', 'src="//maps.googleapis.com', $content);
  $content = str_replace("url: '/", "url: 'https://www.yocale.com/", $content);
  $content = str_replace("= '/", "= 'https://www.yocale.com/", $content);

  echo $content;
}

follow($start);

从给定的代码中,它将成功地在浏览器中呈现html并调用所需的文件,例如javascript。

部分javascript是使用此请求的ajax调用

https://www.yocale.com/Search?distance=25km&latitude=29.748093&longitude=-95.37127699999996&_=1525228859581

它不会获取任何数据,我知道它与CORS有关,而且它在日志中,

Failed to load https://www.yocale.com/Search?distance=25km&latitude=29.748093&longitude=-95.37127699999996&_=1525228859581: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://search.oo' is therefore not allowed access.

其他请求如字体

有没有办法抓取这个页面,使用php在浏览器中使用ajax或类似的方式呈现一些数据?

1 个答案:

答案 0 :(得分:0)

使用以下

在第1行和第2行之间插入新行
header('Access-Control-Allow-Origin: https://www.somewebsite.com', false);

这样的事情:

<?php
header('Access-Control-Allow-Origin: https://www.somewebsite.com', false);
start = "https://www........

标题修改/允许出现在html或php文件的最开头非常重要,因为如果它出现在任何HTML元素之后,此标题无法正确设置会话。