我已经在stackoverflow和网络上搜索过,并且必须在这里遗漏一些东西。我还没找到我想要的东西。也许它被称为其他东西..我有下面的代码将抓住第一个文件夹中的所有内容,但不会从其他文件夹中抓取其他项目。例如,它抓住第一个/前面的所有内容但是如果你有一个网站mysite。 com / folder2 /它不会抓取folder2。一切都是相互联系的。它也会向后旅行。如果你放入网站最长的链接将一直走到网站的前面。我不知道我错过了什么指针会很棒。该网站是我想要废弃的joomla网站。
<?php function storelink($web,$taken) {
$query = "INSERT INTO scanned (web, taken) VALUES ('$web', '$taken')";
mysql_query($query) or die('Error, insert query failed');
}
$target_web = "mysite.com";
$userAgent = 'bobsbot(http://www.somebot.com/bot.html)';
// make the cURL request to $target_web
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);
curl_setopt($ch, CURLOPT_URL, $target_web);
curl_setopt($ch, CURLOPT_FAILONERROR, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch, CURLOPT_TIMEOUT, 1000);
$html= curl_exec($ch);
if (!$html) {
echo "<br />cURL error number:" .curl_errno($ch);
echo "<br />cURL error:" . curl_error($ch);
exit;
}
// parse the html into a DOMDocument
$dom = new DOMDocument();
@$dom->loadHTML($html);
// grab all the on the page
$xpath = new DOMXPath($dom);
$hrefs = $xpath->evaluate("/html/body//a");
for ($i = 0; $i < $hrefs->length; $i++) {
$href = $hrefs->item($i);
$web = $href->getAttribute('href');
storeLink($web,$target_web);
echo "<br />Link saved: $web";
} ?>
答案 0 :(得分:0)
如果我理解正确,您希望隐藏网站并保存所有网址。这意味着您需要在遇到URL时递归。
用于启动蜘蛛的功能称为saveLink($web, $taken)
。遇到链接时调用的函数是storeLink($web, $target_web)
。不应该是saveLink($web, $target_web)
?
saveLink()
应该是递归的,并且还执行cURL请求。应将cURL URL设置为遇到的链接。这样,它将解析遇到的所有链接的DOM并跟踪其中的所有链接。