栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何使用PHP创建简单的搜寻器?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何使用PHP创建简单的搜寻器?

这是受Tatu启发的DOM版本:

<?phpfunction crawl_page($url, $depth = 5){    static $seen = array();    if (isset($seen[$url]) || $depth === 0) {        return;    }    $seen[$url] = true;    $dom = new DOMdocument('1.0');    @$dom->loadHTMLFile($url);    $anchors = $dom->getElementsByTagName('a');    foreach ($anchors as $element) {        $href = $element->getAttribute('href');        if (0 !== strpos($href, 'http')) { $path = '/' . ltrim($href, '/'); if (extension_loaded('http')) {     $href = http_build_url($url, array('path' => $path)); } else {     $parts = parse_url($url);     $href = $parts['scheme'] . '://';     if (isset($parts['user']) && isset($parts['pass'])) {         $href .= $parts['user'] . ':' . $parts['pass'] . '@';     }     $href .= $parts['host'];     if (isset($parts['port'])) {         $href .= ':' . $parts['port'];     }     $href .= dirname($parts['path'], 1).$path; }        }        crawl_page($href, $depth - 1);    }    echo "URL:",$url,PHP_EOL,"CONTENT:",PHP_EOL,$dom->saveHTML(),PHP_EOL,PHP_EOL;}crawl_page("http://hobodave.com", 2);

编辑: 我修复了Tatu版本的一些错误(现在可以使用相对URL)。

编辑: 我添加了新的功能,以防止它两次跟踪相同的URL。

编辑: 现在将输出回显到STDOUT,以便您可以将其重定向到所需的任何文件

编辑:
修复了乔治在回答中指出的错误。相对网址将不再追加到网址路径的末尾,而是将其覆盖。感谢乔治。请注意,乔治的答案不考虑以下任何一项:https,用户,密码或端口。如果您加载了http
PECL扩展名,则可以使用http_build_url轻松完成。否则,我必须使用parse_url手动粘合在一起。再次感谢乔治。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/387190.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号