我的目标是遍历一些网站网址并保存每个网页的特定数据,但是,我甚至不知道如何开始。
链接始终相同。只有最后一个参数(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
如果有人能帮助我,我真的很感激。
答案 0 :(得分:2)
问题是你在$i
上有一个前导零。当数字文字以0
开头时,PHP将其视为八进制,并且数字解析器在遇到非八进制数字时立即停止读取(8
且9
不是八进制数字)。因此$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