php爬虫框架选用什么
一、总结
一句话总结:phpspider:官方下载地址:https://github.com/owner888/phpspider
1、phpspider能够帮我们解决哪些问题?
- 如何进行运行前测试?
- 如何实现模拟登录?
- 如何实现增量采集?
- 如果内容页有分页,该如何爬取到完整数据?
- 如何实现多任务爬虫?
- 如何实现多服务器集群爬虫?
- file_get_contents 设置代理抓取页面
- 如何提前生成列表页URL再提取内容?
- 如何去掉网页中的广告?
- 如何爬取列表页中的数据?
- 开发PHPSpider爬虫的常用工具
二、phpspider 简单使用
phpspider一款优秀的PHP开发蜘蛛爬虫
官方下载地址:https://github.com/owner888/phpspider
官方开发手册:https://doc.phpspider.org/
关于这个爬虫的使用 下载下来之后有写好的实例 我在这里只是说一下我遇到的一个坑
// GitHub下载方式
require_once __DIR__ . \'/../autoloader.php\';
use phpspider\core\phpspider;
/* Do NOT delete this comment */
/* 不要删除这段注释 */
$configs = array(
\'name\' => \'糗事百科\',
\'log_show\' => true,
\'tasknum\' => 1,
//\'save_running_state\' => true,
\'domains\' => array(
\'qiushibaike.com\',
\'www.qiushibaike.com\'
),
\'scan_urls\' => array(
\'http://www.qiushibaike.com/\'
),
\'list_url_regexes\' => array(
"http://www.qiushibaike.com/8hr/page/\d+\?s=\d+"
),
\'content_url_regexes\' => array(
"http://www.qiushibaike.com/article/\d+",
),
\'max_try\' => 5,
//\'proxies\' => array(
//\'http://H784U84R444YABQD:57A8B0B743F9B4D2@proxy.abuyun.com:9010\'
//),
\'export\' => array(
\'type\' => \'csv\',
\'file\' => \'../data/qiushibaike.csv\',
),
//\'export\' => array(
//\'type\' => \'sql\',
//\'file\' => \'../data/qiushibaike.sql\',
//\'table\' => \'content\',
//),
// \'export\' => array(
// \'type\' => \'db\',
// \'table\' => \'content\',
// ),
\'db_config\' => array(
\'host\' => \'127.0.0.1\',
\'port\' => 3306,
\'user\' => \'root\',
\'pass\' => \'123456\',
\'name\' => \'spider\',
),
//\'queue_config\' => array(
//\'host\' => \'127.0.0.1\',
//\'port\' => 6379,
//\'pass\' => \'\',
//\'db\' => 5,
//\'prefix\' => \'phpspider\',
//\'timeout\' => 30,
//),
\'fields\' => array(
array(
\'name\' => "article_title",
\'selector\' => "//*[@id=\'single-next-link\']//div[contains(@class,\'content\')]/text()[1]",
\'required\' => true,
),
array(
\'name\' => "article_author",
\'selector\' => "//div[contains(@class,\'author\')]//h2",
\'required\' => true,
),
array(
\'name\' => "article_headimg",
\'selector\' => "//div[contains(@class,\'author\')]//a[1]",
\'required\' => true,
),
array(
\'name\' => "article_content",
\'selector\' => "//*[@id=\'single-next-link\']//div[contains(@class,\'content\')]",
\'required\' => true,
),
array(
\'name\' => "article_publish_time",
\'selector\' => "//div[contains(@class,\'author\')]//h2",
\'required\' => true,
),
array(
\'name\' => "url",
\'selector\' => "//div[contains(@class,\'author\')]//h2", // 这里随便设置,on_extract_field回调里面会替换
\'required\' => true,
),
),
);
$spider = new phpspider($configs);
$spider->start();
这是官网文档其中的一个实例 使用说明中描述只能通过命令行的模式运行爬虫文件
结果我运行了一下demo并没有成功
之后发现糗事百科已经换成https协议 但是代码中的路由还是http的
我抱着试试的想法改成 https
果然成功了 爬虫已经可以正常运行了
具体的一下参数详情还是得看官网的文档
参考:phpspider 简单使用 - CSDN博客
https://blog.csdn.net/qq_33278933/article/details/79153640
三、phpspider的github情况