PHP CURL-仅知道ID时刮取seo网址

时间:2018-08-10 10:52:02

标签: php curl

我想使用curl刮擦网上商店的多个页面。我的问题是网址对seo友好-或类似的东西-它们看起来像这样:

https://shopname.com/product-id-title-of-a-product.html

如果我使用了整个URL,那么它可以工作,并且我能够获取要查找的数据,但是该标题中我知道的唯一变量是ID

https://shopname.com/product-294

在这种情况下,有没有办法抓取该网址?

其中仅包含ID的URL会对完整URL进行REDIRECT

这是我正在使用的代码:

$curl = curl_init();
$url = 'https://shopname.com/product-294';

curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

$result = curl_exec($curl);

2 个答案:

答案 0 :(得分:4)

Curl提供选项CURLOPT_FOLLOWLOCATION

curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);

文档指出:

  

TRUE以跟随服务器作为HTTP标头发送的任何“ Location:”标头(请注意,这是递归的,除非设置了CURLOPT_MAXREDIRS,否则PHP将遵循发送的许多“ Location:”标头)。

因此建议也设置CURLOPT_MAXREDIRS,例如将执行限制为1重定向:

curl_setopt($curl, CURLOPT_MAXREDIRS, 1);

像这样,您无需任何进一步编程即可自动重定向到原始网址。

答案 1 :(得分:2)

我认为您需要捕获curl对象中的响应标头,该响应标头中应包含重定向URL,然后您可以解析出该响应标头,然后执行第二个curl请求以获取所需的URL。 尝试使用邮递员或失眠之类的应用程序来协助您。