我正在编写一个从URL开始的小应用程序,并查看该特定页面中的所有链接。 接下来,它将继续所有链接并刮除内容,但仅显示特定内容(具有10个或更多字符的数字)。 这是我的代码,但它检索空白页,出了什么问题?
//I
$url = 'http://xxx.xxx';
$str = file_get_contents($url);
$original_file = file_get_contents($url);
$stripped_file = strip_tags($original_file, "<a>");
preg_match_all("/<a(?:[^>]*)href=\"([^\"]*)\"(?:[^>]*)>(?:[^<]*)<\/a>/is", $stripped_file, $matches);
$links = $matches[1];
//print_r($links);
//F
//F
$count = count($links);
for($i=0;$i<=$count;$i++)
{
//I
$curl_handle=curl_init();
curl_setopt($curl_handle, CURLOPT_URL,$links[$i]);
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1');
$query = curl_exec($curl_handle);
curl_close($curl_handle);
preg_match_all('/\b3\d+/', $query, $matches2);
$numbers = $matches2[0];
$count = 0;
foreach($numbers as $value) {
if(strlen((string)$value) >= 10) echo '<br><br>[' . $count++ . "]" . $value;
}
//F
}
//F
答案 0 :(得分:0)
问题#1 :您的html可以包含以下网址:从/home/test.php
选择没有基础http://www.example.com/
的链接。因此,在请求卷曲之前,请在屏幕或浏览器上打印并检查它是什么。
<a href="/home/test.php">link</a>
问题#2 :2
CURLOPT_CONNECTTIMEOUT
秒对您来说可能更少。所以尝试增加这个值。
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 10);
如果问题仍然存在,请向我们展示示例页面链接。以及一个示例内部链接,您将获得空白响应。