PHP CURL - 当您只知道 id 时抓取 seo URL

  • 本文关键字:id 抓取 seo URL CURL PHP php curl
  • 更新时间 :
  • 英文 :


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

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

如果我使用整个 url,它可以工作,并且我能够获得我正在寻找的数据,但我知道该标题中唯一知道的变量是ID

https://shopname.com/product-294

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

仅包含ID的 url 会REDIRECT到完整的 url。

这是我正在使用的代码:

$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);

Curl 提供了选项CURLOPT_FOLLOWLOCATION.

curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);

文档指出:

如果为 TRUE,则遵循服务器作为 HTTP 标头的一部分发送的任何 "Location: " 标头(请注意,这是递归的,PHP 将遵循发送的尽可能多的 "Location: " 标头,除非设置了CURLOPT_MAXREDIRS(。

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

curl_setopt($curl, CURLOPT_MAXREDIRS, 1);

像这样,您应该被自动重定向到原始URL,而无需任何进一步编程。

我认为您需要捕获 curl 对象中的响应标头,其中应包含重定向 URL,然后您可以解析它并执行第二个 curl 请求以获取您想要的 url。 尝试使用邮递员或失眠等应用程序来帮助您完成此过程。

最新更新