这一章节我们正式开展我们的爬虫项目,首先我们先要知道哪个网站能获取到免费代理IP,目前比较火的有西刺代理,快代理等,这里我们拿西刺代理作为例子。
这里就是一个个免费的IP地址以及各自的端口号,我们的任务就是要把这些IP和端口号爬取下来,检测其可用性并且存储起来。
首先我们需要编写一个入口文件,我们命名为run.php,其内容大概是这样:
use ProxyPool\core\ProxyPool;
$proxy = new ProxyPool();
$proxy->run();
实例化ProxyPool并且调用里面的run方法,而我们要用到命名空间并且use它,自然就避免不了一个autoloader(根据命名自动加载对应的文件)。
代码如下:
<?php
namespace AutoLoad;
class autoloader
{
/**
* 根据命名自动加载
*
* @param string $name use的路径,例如我们这里就是ProxyPool\core\ProxyPool
* @return boolean
*/
public static function load_namespace($name)
{
//兼容windows和linux的目录分隔符
$class_path = str_replace('\\', DIRECTORY_SEPARATOR, $name);
//获取文件路径
$class_file = __DIR__ . substr($class_path, strlen('ProxyPool')) . '.php';
//如果不存在,去上一层目录寻找
if (empty($class_file) || !is_file($class_file))
{
$class_file = __DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . "$class_path.php";
}
if (is_file($class_file))
{
require_once($class_file);
if (class_exists($name, false))
{
return true;
}
}
return false;
}
}
//spl注册自动加载
spl_autoload_register('\AutoLoad\autoloader::load_namespace');
然后我们再回来修改我们的run.php文件:
<?php
require_once __DIR__ . '/autoloader.php';
use ProxyPool\core\ProxyPool;
$proxy = new ProxyPool();
$proxy->run();
这样我们就可以通过命名空间直接use我们自己写好的各个类文件啦。