如何使用phpspider框架进行长尾关键词抓取?

2026-04-02 03:111阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计532个文字,预计阅读时间需要3分钟。

如何使用phpspider框架进行长尾关键词抓取?

最近使用PHP的爬虫框架爬取了一个项目,总体来说还是很方便的。首先,我会把phpspider框架的文档记录下来,方便大家参考。使用方法在文档中写得非常清晰,而且demo中也有使用示例。

最近使用PHP的爬虫框架爬取了一个项目,总体来说还是很方便的,首先我会把phpspider框架文档记录下来给大家参考。

使用方法其实在文档中写的很清楚而且在demo中也有使用示例。

<?php include "./autoloader.php"; use phpspider\core\phpspider; /* Do NOT delete this comment */ /* 不要删除这段注释 */ $configs = array( 'name' => '免费动态IP', 'domains' => array( 'jshk.com.cn', 'cnbaowen.net' ), 'scan_urls' => array( 'jshk.com.cn/mb/reg.asp?kefu=xjy (测试链接)' ), 'export' => array( 'type' => 'db', 'table' => 'articles_mc', ), 'db_config' => array( 'host' => '127.0.0.1', 'port' => 3306, 'user' => 'root', 'pass' => '123456', 'name' => 'spider', ), 'content_url_regexes' => array( "jshk.com.cn/mb/reg.asp?kefu=xjy" ), 'list_url_regexes' => array( "jshk.com.cn/mb/reg.asp?kefu=xjy" ), 'fields' => array( array( // 抽取内容页的文章内容 'name' => "title", 'selector' => "//h1[@id='title']", 'required' => true ), array( // 抽取内容页的文章作者 'name' => "content", 'selector' => "//div[@id='content']", 'required' => true ), array( // 抽取内容页的文章作者 'name' => "type" ), array( // 抽取内容页的文章作者 'name' => "site_id" ), ), ); $spider = new phpspider($configs); $spider->on_list_page = function($page, $content, $spider){ for ($i = 2; $i < 24; $i++) { $url = "jshk.com.cn/mb/reg.asp?kefu=xjy"; $spider->add_url($url); } }; $spider->on_extract_field = function($fieldname, $data, $page){ if($fieldname == "type"){ return 2; }elseif($fieldname == "content"){ $s = preg_replace("/<div style=\"float:right[\s\S]*?div>/","",$data); $s = preg_replace('/<a .*?href="(.*?)".*?>/is',"<a href='#'>",$s); $data = preg_replace('/<img.*?>/is',"",$s); return $data; }elseif($fieldname == "site_id"){ return 1; }else{ return $data; } }; $spider->start();

注释:这里需要说明一点,抓取页面数据时我只需要标题和内容的部分,但是存入数据库时我需要使用到另外两个字段,所以定义字段的时候多定义了`type`和`site_id`两个字段,但是这两个字段的实际赋值是在 `on_extract_field` 回调函数中完成的

附带sql语句

CREATE TABLE `articles_mc` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `title` varchar(200) DEFAULT NULL, `content` text, `type` int(5) DEFAULT '0' COMMENT '文章类型 1行业资讯 2技术资料', `site_id` int(5) DEFAULT NULL COMMENT '站点id', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=4887 DEFAULT CHARSET=utf8mb4;

如何使用phpspider框架进行长尾关键词抓取?

本文共计532个文字,预计阅读时间需要3分钟。

如何使用phpspider框架进行长尾关键词抓取?

最近使用PHP的爬虫框架爬取了一个项目,总体来说还是很方便的。首先,我会把phpspider框架的文档记录下来,方便大家参考。使用方法在文档中写得非常清晰,而且demo中也有使用示例。

最近使用PHP的爬虫框架爬取了一个项目,总体来说还是很方便的,首先我会把phpspider框架文档记录下来给大家参考。

使用方法其实在文档中写的很清楚而且在demo中也有使用示例。

<?php include "./autoloader.php"; use phpspider\core\phpspider; /* Do NOT delete this comment */ /* 不要删除这段注释 */ $configs = array( 'name' => '免费动态IP', 'domains' => array( 'jshk.com.cn', 'cnbaowen.net' ), 'scan_urls' => array( 'jshk.com.cn/mb/reg.asp?kefu=xjy (测试链接)' ), 'export' => array( 'type' => 'db', 'table' => 'articles_mc', ), 'db_config' => array( 'host' => '127.0.0.1', 'port' => 3306, 'user' => 'root', 'pass' => '123456', 'name' => 'spider', ), 'content_url_regexes' => array( "jshk.com.cn/mb/reg.asp?kefu=xjy" ), 'list_url_regexes' => array( "jshk.com.cn/mb/reg.asp?kefu=xjy" ), 'fields' => array( array( // 抽取内容页的文章内容 'name' => "title", 'selector' => "//h1[@id='title']", 'required' => true ), array( // 抽取内容页的文章作者 'name' => "content", 'selector' => "//div[@id='content']", 'required' => true ), array( // 抽取内容页的文章作者 'name' => "type" ), array( // 抽取内容页的文章作者 'name' => "site_id" ), ), ); $spider = new phpspider($configs); $spider->on_list_page = function($page, $content, $spider){ for ($i = 2; $i < 24; $i++) { $url = "jshk.com.cn/mb/reg.asp?kefu=xjy"; $spider->add_url($url); } }; $spider->on_extract_field = function($fieldname, $data, $page){ if($fieldname == "type"){ return 2; }elseif($fieldname == "content"){ $s = preg_replace("/<div style=\"float:right[\s\S]*?div>/","",$data); $s = preg_replace('/<a .*?href="(.*?)".*?>/is',"<a href='#'>",$s); $data = preg_replace('/<img.*?>/is',"",$s); return $data; }elseif($fieldname == "site_id"){ return 1; }else{ return $data; } }; $spider->start();

注释:这里需要说明一点,抓取页面数据时我只需要标题和内容的部分,但是存入数据库时我需要使用到另外两个字段,所以定义字段的时候多定义了`type`和`site_id`两个字段,但是这两个字段的实际赋值是在 `on_extract_field` 回调函数中完成的

附带sql语句

CREATE TABLE `articles_mc` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `title` varchar(200) DEFAULT NULL, `content` text, `type` int(5) DEFAULT '0' COMMENT '文章类型 1行业资讯 2技术资料', `site_id` int(5) DEFAULT NULL COMMENT '站点id', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=4887 DEFAULT CHARSET=utf8mb4;

如何使用phpspider框架进行长尾关键词抓取?