Doogle 是一个搜索引擎和网络爬虫,可以搜索索引的网站和图像

日期: 栏目:源码 浏览:1328 评论:0

欢迎来到Ceacer 网安,今天带来的是一个搜索引擎和并带有网络爬虫介绍

Doogle 是一个搜索引擎和网络爬虫,可以搜索索引的网站和图像,然后使用关键字进行搜索。

主要用 OOP 风格的 PHP 编写,旨在更好地理解 OOP 以及网络爬虫的工作原理。

Doogle 是一个搜索引擎和网络爬虫,可以搜索索引的网站和图像-第1张图片-Ceacer网络

演示网站: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

Doogle 是一个搜索引擎和网络爬虫,可以搜索索引的网站和图像-第2张图片-Ceacer网络

现在可以通过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脚本完成。

检查表imagessites数据库以确保它们已被填充。

Doogle 是一个搜索引擎和网络爬虫,可以搜索索引的网站和图像-第3张图片-Ceacer网络

一旦表格填充完毕,请访问 Doogle 主页并进行搜索!查看预览图像。

编程逻辑

分页系统逻辑

在search.php内部,实现了分页

Doogle 是一个搜索引擎和网络爬虫,可以搜索索引的网站和图像-第4张图片-Ceacer网络

在上面的示例中,currentPage=11。显示的页数始终为 10。

每页结果

站点搜索将每页返回 20 个结果,图像搜索将每页返回 30 个结果。

每页的结果可以分别在 search.php 中的第 {83, 88} 行进行更改。如 $pageSize 变量所示:

Doogle 是一个搜索引擎和网络爬虫,可以搜索索引的网站和图像-第5张图片-Ceacer网络

处理边缘情况

当没有更多页面可用时,可能会出现边缘情况。

因此,对于 331 个结果,将有17 个页面可用。然而,如果不考虑边缘情况,分页系统的 UI 将允许滚动浏览不存在的页面;这将返回一个空结果。

为了处理边缘情况,在 while 循环中实现以下逻辑:

if($currentPage + $pagesLeft > $numPages + 1)
    $currentPage = $numPages + 1 - $pagesLeft;

while($pagesLeft != 0 && $currentPage <= $numPages) 
{ ... }

图片搜索

图片说明

为了使图像搜索提供更多信息,“alt”标签是搜索词的一部分。如./classes/ImageResultsProvider.php第34行所示

Doogle 是一个搜索引擎和网络爬虫,可以搜索索引的网站和图像-第6张图片-Ceacer网络

使用 JavaScript 加载图像

在“图像”表中,有一行“已损坏”,用于跟踪返回错误的图像。

由于图像已经通过纯服务器端解决方案加载,因此必须利用 AJAX 动态加载图像。显示在 ./assets/js/script.js 中

Doogle 是一个搜索引擎和网络爬虫,可以搜索索引的网站和图像-第7张图片-Ceacer网络

石工

图像搜索使用Masonry-Cascading 网格布局库

Masonry 允许图像采用网格布局,该布局由于 jQuery 而具有响应性。下图显示了布局示例:

Doogle 是一个搜索引擎和网络爬虫,可以搜索索引的网站和图像-第8张图片-Ceacer网络

网站搜索 - 修剪结果

如预览图像所示,Doogle 在执行站点搜索时将为每个结果返回(标题、URL 和描述)。

然而,为了使某些结果更易于阅读,需要执行修剪过程。在 ./classes/SiteResultsProvider.php 中调用函数 trimField() :

Doogle 是一个搜索引擎和网络爬虫,可以搜索索引的网站和图像-第9张图片-Ceacer网络

Doogle 是一个搜索引擎和网络爬虫,可以搜索索引的网站和图像-第10张图片-Ceacer网络

标题被削减为 55 个字符,描述被削减为 230 个字符。

遥测

数据库中的“images”和“sites”表都有一行,每一列都包含“clicks”。

每次访问网站或预览图像时,“点击次数”字段都会增加。

执行搜索时,返回的结果按点击次数的降序排列。此行为由 ./classes/SiteResultsProvider.php 函数 getResultsHtml() 内的 $query 显示。参见第 43 行。

Doogle 是一个搜索引擎和网络爬虫,可以搜索索引的网站和图像-第11张图片-Ceacer网络

用户代理

爬行期间使用的用户代理数据位于 ./classes/DomDocumentParser.php 内部。如第 9 行所示:

Doogle 是一个搜索引擎和网络爬虫,可以搜索索引的网站和图像-第12张图片-Ceacer网络

预览图像

Doogle 是一个搜索引擎和网络爬虫,可以搜索索引的网站和图像-第13张图片-Ceacer网络

Doogle 搜索 - 站点

Doogle 是一个搜索引擎和网络爬虫,可以搜索索引的网站和图像-第14张图片-Ceacer网络

Doogle 搜索 - 图片

Doogle 是一个搜索引擎和网络爬虫,可以搜索索引的网站和图像-第15张图片-Ceacer网络

图像预览

图像预览是使用 Fancybox 完成的。

标题、图像 URL 和站点 URL 位于左下角。

Doogle 是一个搜索引擎和网络爬虫,可以搜索索引的网站和图像-第16张图片-Ceacer网络


分页系统

当然,某些搜索词可能会返回许多结果,例如“bbc”。

Doogle每页仅显示20 个站点。在页面底部,我们可以查看接下来的 10 页。

结果显示

Doogle 是一个搜索引擎和网络爬虫,可以搜索索引的网站和图像-第17张图片-Ceacer网络

页面底部

Doogle 是一个搜索引擎和网络爬虫,可以搜索索引的网站和图像-第18张图片-Ceacer网络

第 13 页底部

Doogle 是一个搜索引擎和网络爬虫,可以搜索索引的网站和图像-第19张图片-Ceacer网络

doogleBot 抓取表单

用于提交 URL 进行爬行的 HTML 表单

Doogle 是一个搜索引擎和网络爬虫,可以搜索索引的网站和图像-第20张图片-Ceacer网络


标签:

评论留言

我要留言

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。发布前请先查看评论规则:点我查看