抓取百度收录死链 [ 1.0 版本 ]
背景:百度收录了很多以前网站、域名的页面,这些页面是无效的,需要汇总出来,然后向百度提交。但是手动汇总很麻烦,所以我就做了个小程序,抓取百度搜索结果,然后判断页面是否能够访问,不能访问就写入文件。
相关采集技术见:YII2网站采集
<?php
namespace console\controllers;
use Goutte\Client;
use yii\console\Controller;
class UrlSpiderController extends Controller{
//采集交易所公告
public function actionRun(){
@set_time_limit(-1);
$arrays = [];
$client = new Client();
//循环获取百度搜索网址,并对分页进行处理
for($i=0;$i<=75;$i++){
$j = 10*$i;
$url = 'http://www.baidu.com/s?wd=site%3Aqhmoney.cn&pn='.$j.'&oq=site%3Aqhmoney.cn&ie=utf-8&f=3&usm=1&rsv_pq=88108cd80002d6be&rsv_t=3a40aT%2B5WIgyrNJJIOxOn42wx795GCIQHic27ofL0HTGhDWcfXZTvulEmBU';
//采集网址列表
$crawler = $client->request('GET', $url);
$crawler->filter('#content_left .t a')->each(function ($node) use(&$arrays){
if(count($node)){
$href = $node->attr('href');
$h = $this->getrealurl($href);
$arrays[] = $h;
}
});
}
//判断地址是否可用
foreach($arrays as $url){
$handle = get_headers($url);
if($handle){
if($handle['0'] == 'HTTP/1.1 404 Not Found'){
file_put_contents(\Yii::$app->getBasePath().'/url.txt',$url.PHP_EOL,FILE_APPEND);
}
}
}
}
//解析百度地址
function getrealurl($url){
$header = get_headers($url,1);
if (strpos($header[0],'301') || strpos($header[0],'302')) {
if(is_array($header['Location'])) {
return $header['Location'][count($header['Location'])-1];
}else{
return $header['Location'];
}
}else {
return $url;
}
}
}
specialnot
注册时间:2015-08-06
最后登录:2019-08-16
在线时长:27小时54分
最后登录:2019-08-16
在线时长:27小时54分
- 粉丝43
- 金钱1175
- 威望200
- 积分3445
热门源码
- 基于 Yii 2 + Bootstrap 3 搭建一套后台管理系统 CMF
- 整合完 yii2-rbac+yii2-admin+adminlte 等库的基础开发后台源码
- 适合初学者学习的一款通用的管理后台
- yii-goaop - 将 goaop 集成到 Yii,在 Yii 中优雅的面向切面编程
- yii-log-target - 监控系统异常且多渠道发送异常信息通知
- 店滴云1.3.0
- 面向对象的一小步:添加 ActiveRecord 的 Scope 功能
- Yii2 开源商城 FecShop
- 基于 Yii2 开发的多店铺商城系统,免费开源 + 适合二开
- leadshop - 基于 Yii2 开发的一款免费开源且支持商业使用的商城管理系统
共 1 条评论