迭代URL并获取特定值

时间:2016-04-18 19:37:05

标签: php url https get

我的目标是遍历一些网站网址并保存每个网页的特定数据,但是,我甚至不知道如何开始。

链接始终相同。只有最后一个参数(ID)会发生变化。 它看起来像:

https://www.test.com/controller-name/06876472

该页面具有以下结构:

<p>test</p>
<h2>TEST</h2>

我想获得下一个100 <h2></h2>元素。 所以循环应该停在06876571元素。

我已经尝试过这样的事情:

   <?php

        for($i=06876472; $i<06876572; $i++) {
           $results[]=file_get_contents("https://test.com/controller-name/".$i."");

        }


        print_r($results);

?>

这是一个安全连接(https)。

错误是:

  

file_get_contents(url):无法打开流:HTTP请求失败!找不到HTTP / 1.1 404

如果有人能帮助我,我真的很感激。

2 个答案:

答案 0 :(得分:2)

问题是你在$i上有一个前导零。当数字文字以0开头时,PHP将其视为八进制,并且数字解析器在遇到非八进制数字时立即停止读取(89不是八进制数字)。因此$i = 06876472被视为$i = 6

如果数字长度应始终为8位数,并带有前导零,则可以使用sprintf()对其进行格式化。

for ($i = 6876472; $i < 6876472 + 100; $i++) {
    $url = sprintf("https://test.com/controller-name/%08d", $i);
    $results[] = file_get_contents($url);
}

答案 1 :(得分:0)

在PHP中查看这些函数,将使您走上正确的轨道:

http_build_query()
explod()
foreach()
and finally the global $_GET array