我有这样的网址
www.example.com/abc/xyz
当它加载时会变成不同的网址,如:
www.example.com/abc/xyz#facet=c_State+s_FL+p14_2+r14_5g6tVndJ+n10_2+x10_2BLnMX+b5_0+h5_0+g3_0+f3_0+v_No Preference+t8_0+a30_0+u_0+k_0+q_0+w_false+j_Q+e_1+i_2
我只想要第二个网址..所以我可以使用该参数来使用curl发送json数据。
第二个网址正在请求json数据,因此我无法跟踪它。我希望使用第一个网址获取该数据。
这是我的代码:
$url = "http://www.lennar.com/New-Homes/Florida/Tampa";
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION , false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
)
);
curl_setopt($ch, CURLOPT_URL, $url);
$result = curl_exec($ch);
curl_close($ch);
var_dump($result);
和我的输出是:
string '
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-us" xml:lang="en-us" xmlns:fb="http://ogp.me/ns/fb#" xmlns:og="http://opengraphprotocol.org/schema/">
<head id="Head1"><meta name="keywords" content="quality, new homes, home builder" />
<meta name="description" content="Lennar Homes: If a home builder provided everything you want and everything you need, and by doing so, was a'... (length=165671)
答案 0 :(得分:1)
您希望获得的所谓“第二个网址”由JavaScript生成。
请注意,您未被第一个网址重定向到第二个网址。在页面加载后在第一个URL下生成的JS只是将一些数据添加到第一个URL。
curl,wget或file_get_contents 都不能满足您的需求,因为这些都不会解析/执行JavaScript代码。
如果你想模拟创建第二个URL,你可以尝试在那个页面上检查JS(我会说错误的想法,需要大量工作并且对外部逻辑变化很有用)或者尝试查看SO:{{3然后使用JS引擎获取第二个URL。
如果你想模拟URL,我会看一下加载HTML中的var facetContextJSON
- 它是某种配置JSON,你可以通过cURL
获得,regexp +解析它并弄清楚如何构建您实际需要的URL。
答案 1 :(得分:0)
我找到了获取json参数的方法,而这些参数是我无法通过curl获得的。这是解决方案:
$.get(
'http://www.example.com',
function(response) {
//your response as html of that page
});
从上面的脚本中我得到了该页面的整个html并获得了json数据。然后通过使用字符串操作,我找到了我想要的下一个url的确切变量。