ceacer 2 已发布 1月19号 分享 已发布 1月19号 欢迎来到Ceacer 网安,今天带来的是一个搜索引擎和并带有网络爬虫介绍 Doogle 是一个搜索引擎和网络爬虫,可以搜索索引的网站和图像,然后使用关键字进行搜索。 主要用 OOP 风格的 PHP 编写,旨在更好地理解 OOP 以及网络爬虫的工作原理。 演示网站:https://www.70m.top 下载地址:https://zip.cenet.top/v3/doogle-main.zip 特征 搜索网站 显示标题、URL 和描述 搜索图片 将鼠标悬停在图像上可预览说明(alt 标签) 搜索图像的砖石布局 使用 Fancybox 预览图像 图片搜索页面动态响应 干净的主页 过滤损坏的图像结果 按点击/访问整理搜索结果 搜索页面底部的分页系统 显示搜索词的“找到的结果” 支持非拉丁字符 (UTF-8) 设置和使用 Docker 配置文件可在doogle-docker获取。 假设您已经安装并配置了Docker v3.9(或更高版本)。 git clone https://github.com/safesploit/doogle-docker.git cd doogle-docker sh build.sh 现在可以通过localhost:8000访问 Doogle 。 为了调试, phpMyAdmin 也包含在localhost:8001上。 抓取网站以填充图像和站点表 基于表单的抓取 在浏览器中转到文件所在的位置http://localhost/crawl.php 将 URL 粘贴到输入字段中,然后按“抓取”按钮。 手动抓取 在crawl-manual.php的底部,变量$startUrl是粘贴要抓取的网站URL的位置: $startUrl = "https://thehackernews.com/"; 然后在浏览器中转到文件所在的位置http://localhost/crawl-manual.php 解释 抓取过程需要一些时间,这完全取决于被抓取网站的大小。该页面将继续加载(没有输出),直到crawl.php脚本完成。 检查表images和sites数据库以确保它们已被填充。 一旦表格填充完毕,请访问 Doogle 主页并进行搜索!查看预览图像。 编程逻辑 分页系统逻辑 在search.php内部,实现了分页 在上面的示例中,currentPage=11。显示的页数始终为 10。 每页结果 站点搜索将每页返回 20 个结果,图像搜索将每页返回 30 个结果。 每页的结果可以分别在 search.php 中的第 {83, 88} 行进行更改。如 $pageSize 变量所示: 处理边缘情况 当没有更多页面可用时,可能会出现边缘情况。 因此,对于 331 个结果,将有17 个页面可用。然而,如果不考虑边缘情况,分页系统的 UI 将允许滚动浏览不存在的页面;这将返回一个空结果。 为了处理边缘情况,在 while 循环中实现以下逻辑: if($currentPage + $pagesLeft > $numPages + 1) $currentPage = $numPages + 1 - $pagesLeft; while($pagesLeft != 0 && $currentPage <= $numPages) { ... } 图片搜索 图片说明 为了使图像搜索提供更多信息,“alt”标签是搜索词的一部分。如./classes/ImageResultsProvider.php第34行所示 使用 JavaScript 加载图像 在“图像”表中,有一行“已损坏”,用于跟踪返回错误的图像。 由于图像已经通过纯服务器端解决方案加载,因此必须利用 AJAX 动态加载图像。显示在 ./assets/js/script.js 中 石工 图像搜索使用Masonry-Cascading 网格布局库。 Masonry 允许图像采用网格布局,该布局由于 jQuery 而具有响应性。下图显示了布局示例: 网站搜索 - 修剪结果 如预览图像所示,Doogle 在执行站点搜索时将为每个结果返回(标题、URL 和描述)。 然而,为了使某些结果更易于阅读,需要执行修剪过程。在 ./classes/SiteResultsProvider.php 中调用函数 trimField() : 标题被削减为 55 个字符,描述被削减为 230 个字符。 遥测 数据库中的“images”和“sites”表都有一行,每一列都包含“clicks”。 每次访问网站或预览图像时,“点击次数”字段都会增加。 执行搜索时,返回的结果按点击次数的降序排列。此行为由 ./classes/SiteResultsProvider.php 函数 getResultsHtml() 内的 $query 显示。参见第 43 行。 用户代理 爬行期间使用的用户代理数据位于 ./classes/DomDocumentParser.php 内部。如第 9 行所示: 预览图像 Doogle 搜索 - 站点 Doogle 搜索 - 图片 图像预览 图像预览是使用 Fancybox 完成的。 标题、图像 URL 和站点 URL 位于左下角。 分页系统 当然,某些搜索词可能会返回许多结果,例如“bbc”。 Doogle每页仅显示20 个站点。在页面底部,我们可以查看接下来的 10 页。 结果显示 页面底部 第 13 页底部 doogleBot 抓取表单 用于提交 URL 进行爬行的 HTML 表单 评论链接 在其他网站上分享 更多分享选项...
推荐帖
创建账户或登录以发表评论
您需要成为会员才能发表评论
创建一个帐户
在我们的社区注册一个新账户。很简单!
注册新账户登入
已有账户?在此登录
立即登录