Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP CURL-当您只知道id时,可以刮取seo URL_Php_Curl - Fatal编程技术网

PHP CURL-当您只知道id时,可以刮取seo URL

PHP CURL-当您只知道id时,可以刮取seo URL,php,curl,Php,Curl,我想用curl刮一个网上商店的多个页面。我遇到的问题是URL是seo友好的——或者类似的东西——它们看起来像这样: https://shopname.com/product-id-title-of-a-product.html 如果我使用整个url,它就工作了,我能够获得我要查找的数据,但我知道标题中唯一的变量是ID: https://shopname.com/product-294 在这种情况下,有没有办法删除该url 只有ID的url将重定向到完整url 这是我正在使用的代码: $cur

我想用curl刮一个网上商店的多个页面。我遇到的问题是URL是seo友好的——或者类似的东西——它们看起来像这样:

https://shopname.com/product-id-title-of-a-product.html
如果我使用整个url,它就工作了,我能够获得我要查找的数据,但我知道标题中唯一的变量是
ID

https://shopname.com/product-294
在这种情况下,有没有办法删除该url

只有
ID
的url将
重定向到完整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对象中的响应头,该响应头中应该包含重定向url,然后您可以将其解析出来,并执行第二个curl请求以获取您要查找的url。
尝试使用类似postman或失眠的应用程序来帮助您完成这一过程。

我认为您需要捕获curl对象中的响应头,该响应头中应该包含重定向url,然后您可以解析该响应头并执行第二个curl请求以获取您要查找的url。 尝试使用类似postman或失眠的应用程序来帮助您完成此过程。

Curl提供了此选项

文件规定:

如果在服务器作为HTTP头的一部分发送的任何“Location:”头之后加上TRUE(注意,这是递归的,PHP将在发送的相同数量的“Location:”头之后加上,除非设置了CURLOPT_MAXREDIRS)

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

curl_setopt($curl, CURLOPT_MAXREDIRS, 1);
这样,您将自动重定向到原始url,而无需进行任何进一步的编程。

Curl提供了此选项

文件规定:

如果在服务器作为HTTP头的一部分发送的任何“Location:”头之后加上TRUE(注意,这是递归的,PHP将在发送的相同数量的“Location:”头之后加上,除非设置了CURLOPT_MAXREDIRS)

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

curl_setopt($curl, CURLOPT_MAXREDIRS, 1);


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

可能没有……如果该商店系统没有提供该url下的内容,也没有重定向到完整url……那么没有。这是您的商店吗?嘿,CBroe,该url确实将我重定向到完整url,没有,是的,这是我的,但我想学习curl,而不是查询db:dx_XHey-Philipp,我的问题是,如果我插入一个完整的url,它可以工作,但只有id在它不工作,但在同一时间,如果我把只有id在我的浏览器中的url,并按enter键,它会重定向我X_X@emma它的工作原理如我刚刚发布的答案中所述可能没有…如果商店系统没有提供该URL下的内容,也不会重定向到完整的URL…那么不。这是你的商店吗?嘿,CBroe,URL确实会将我重定向到完整的URL,不,是的,这是我的,但我想学习curl不查询db:D xxheyPhilipp,我的问题是,如果我插入一个完整的url,它可以工作,但只有id在它不工作,但在同一时间,如果我把只有id在我的浏览器中的url,并按enter键,它会重定向我X_X@emma它的工作原理如我刚刚发布的答案所述Hey noid,难道没有办法自己编写代码吗#-o我的意思是,你能告诉我更多关于我应该寻找什么的细节吗?X_Xi以前只在肥皂中做过,而不是卷发,所以您需要设置类似的内容来开始:Phillipp Maurer有一个比我更好的答案。感谢您花时间回答我的问题!非常感谢:DHaving在使用soap时也有过同样的经历,我确信我可以提供这种经历作为一种可能的解决方案,事实证明Curl内置了它。:)嘿,诺伊德,难道没有办法自己写代码吗#-o我的意思是,你能告诉我更多关于我应该寻找什么的细节吗?X_Xi以前只在肥皂中做过,而不是卷发,所以您需要设置类似的内容来开始:Phillipp Maurer有一个比我更好的答案。感谢您花时间回答我的问题!非常感谢:DHaving在使用soap时也有过同样的经历,我确信我可以提供这种经历作为一种可能的解决方案,事实证明Curl内置了它。:)
CURLOPT\u FOLLOWLOCATION
存在一些已知问题,其解决方案已在中进行了说明。现在它可以工作了,非常感谢您抽出时间!现在我还有一个问题,如果我有一个10个产品id的数组,我想废弃它,那么在foreach中使用curl可以吗-s@emma应该回答您的问题。
CURLOPT\u FOLLOWLOCATION
有一些已知问题,其解决方案已在中记录。现在它可以工作了,非常感谢您抽出时间!现在我还有一个问题,如果我有一个10个产品id的数组,我想废弃它,那么在foreach中使用curl可以吗-s@emma我应该回答你的问题。