Sitemap 可方便网站管理员通知搜索引擎他们网站上有哪些可供抓取的网页。最简单的 Sitemap 形式,就是XML 文件,在其中列出网站中的网址以及关于每个网址的其他元数据(上次更新的时间、更改的频率以及相对于网站上其他网址的重要程度为何等),以便搜索引擎可以更加智能地抓取网站。
物料
laravel /php
开始
搜索引擎肯定是希望把开发者提供的服务器直接给他,所以需要有一个统一的格式给搜索引擎的蜘蛛。这样搜索引擎就可以直接读取这个xml文件,不需要爬整个网站的数据。
下面用代码实现:
用一个来自俄罗斯的开发者:Maintainers
,应该很多老铁认识他,yii的维护者
composer require samdark/sitemap
按照这边的例子,很方便的实现网站地图的生成
use samdark\sitemap\Sitemap;
use samdark\sitemap\Index;
// create sitemap
$sitemap = new Sitemap(__DIR__ . '/sitemap.xml');
// add some URLs
$sitemap->addItem('http://example.com/mylink1');
$sitemap->addItem('http://example.com/mylink2', time());
$sitemap->addItem('http://example.com/mylink3', time(), Sitemap::HOURLY);
$sitemap->addItem('http://example.com/mylink4', time(), Sitemap::DAILY, 0.3);
// set sitemap stylesheet (see example-sitemap-stylesheet.xsl)
$sitemap->setStylesheet('http://example.com/css/sitemap.xsl');
// write it
$sitemap->write();
我的网站是一个纸尿裤分析的网站,所以我只需要把所有的纸尿裤的详情页给蜘蛛了
$sitemap = new \samdark\sitemap\Sitemap(public_path('/sitemap.xml'));
$data = GoodsSku::query()
->whereNotNull('image_url')
->where('unit_amount','>',0)
->get();
foreach ($data as $item){
/**
* @var GoodsSku $item
*/
$sitemap->addItem('https://www.dingdong.site/detail/'.$item->id,strtotime($item->updated_at),\samdark\sitemap\Sitemap::HOURLY);
}
$sitemap->setStylesheet('https://www.dingdong.site/sitemap.xml');
$sitemap->write();
将生生成好的xml文件放在根目录中,定时任务可以每天触发这个程序生成sitemap文件。
这边addItem中几个参数说一下:
第一个: 网站的具体路径
第二个: 是数据更新的时间戳
第三个:说明下网站数据更新的频率
第四个:该数据在网站中的权重(比如我的纸尿裤,帮宝适卖得最好,那就可以把这个权重设高一点)
这时访问 https://www.dingdong.site/sitemap.xml
蜘蛛就能检索到这个文件了,具体能不能爬到呢?这个我也不懂,过几个月再过来看看吧。