如何用PHP编写高效的长尾关键词采集工具?

2026-04-05 16:361阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

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

如何用PHP编写高效的长尾关键词采集工具?

PHP实现的Web采集神器,仅需简单配置,即可采集任意无严格验证的站点。支持扩展IP代理功能及伪原创功能。推荐站点:www.itziy.com、csdn免费下载器、pudn免费下载器、51cto免费。

如何用PHP编写高效的长尾关键词采集工具?

php实现的web采集神器,只需要通过简单配置,就可以采集任意没有严格校验的站点
可以扩展IP代理功能以及伪原创功能
推荐几个站点
www.itziy.comcsdn免积分下载器pudn免积分下载器51cto免积分下载器
www.94cto.com免费分享资源
www.verypan.com百度网盘搜索引擎

1.[代码][PHP]代码

<?php /** * 可以灵活配置使用的采集器 * 作者:Rain * 创建时间:2015-02-03 15:17:30 * 版本信息:V1.0 */ /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //数据库的相关配置信息,请根据您的数据库信息进行配置 define('DB_HOST', 'localhost'); define('DB_USER', 'root'); define('DB_PWD', 'test123456'); define('DB_NAME', 'test_dbname'); define('DB_CHARSET', 'utf8'); define('TABLE_NAME', 'tb_book'); //end //网站信息相关的配置,请根据具体需要采集的网站内容信息进行配置 define('WEB_CHARSET', 'gbk'); //变动的参数,使用%d进行替换,只支持数值形式的变动 define('WEB_LIST_URL', 'www.pcbookcn.com/book/1_%d.htm'); //分页的条数 define('PAGE_COUNT', 14); //从哪个页面开始抓取 define('PAGE_START', 1); //内容页的URL,使用正则模式,必须包含/,例如:/\/xuefu2008\/article\/details\/(\d)+/i define('WEB_CONTENT_URL_REG', '/\/book\/(\d)+\.htm/i'); //网站域名HOST信息,不包含末尾的/,例如:blog.csdn.net define('WEB_HOST', 'www.pcbookcn.com'); //列表页内容的精准定位,用来大致抓取一个列表页的内容显示模块位置,使用正则进行定位 define('WEB_LIST_POSTION', '/book_name\.gif(.*?)<td\swidth="15\%"\snowrap>/i'); //end //微调参数,通常不修改也不会影响您的正常使用 define('SLEEP_TIME', 1); define('IS_DEBUG', false); define('INSERT_DB', true); //内容的输出速度,单位:秒 define('OUTPUT_SPEED', 1); //end //需要过滤删除的文字,根据采集的网站类型进行设置,不区分大小写 $text_filter = array( '- 中华电脑书库' => '', '_电脑电子书' => '', '_电脑书籍' => '', '下载' => '', ); //表结构映射的配置 $table_mapping = array( //表字段名称 => 获取该字段的正则表达式,非空字段都必须在此设置映射关系,常量值请直接填写具体对应的值,无需使用正则 'size' => '/软件大小.*?000000>(.*?)<\/font>/i', 'logo' => 'www.94cto.com/indeximg.558idc.com/uploadfile/images/20150105/0b8461910de101cc51a07684cdab797e.jpg', 'field1' => '/<title>(.*?)<\/title>/i', 'field2' => '/软件简介.*?000000>(.*?)<\/font>/i', 'field3' => '1', 'field4' => '1', 'field5' => '1', 'field6' => '电子书,计算机,图像,图形', 'platform' => 'window/Linux', 'ishot' => '1', 'agreement' => '免费', 'downurl' => '/(\/down\.asp\?id=.*?)"/i', 'istop' => '1', ); /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// $ga = new Gather(); $ga->run(); class Gather { public function __construct() { $this->init_check(); } public function run() { global $table_mapping, $text_filter; for ($page = PAGE_START; $page <= PAGE_COUNT; $page++) { $this->write('开始采集列表第'.$page.'页的内容...'); $list_content = $this->get(sprintf(WEB_LIST_URL, $page)); if (empty($list_content)) { $this->write('抓取的列表页的内容为空,所以过滤掉'); continue; } $list_content = str_replace("\r", '', $list_content); $list_content = str_replace("\n", '', $list_content); //精准定位要抓取的模块内容 if (!preg_match(WEB_LIST_POSTION, $list_content, $list_search)) { $this->write('精准匹配列表页的内容失败,所以过滤掉'); continue; } if (isset($list_search[1])) $list_content = $list_search[1]; else $list_content = $list_search[0]; //end preg_match_all(WEB_CONTENT_URL_REG, $list_content, $match); if (is_array($match[0]) && !empty($match[0])) { $this->write('当前的列表页面,总共匹配到:'.count($match[0]).'个内容页'); foreach ($match[0] as $val) { if (strpos($val, 'www.baidu.com/search/spider.htm)"); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HTTPHEADER, $data); $ret = curl_exec($ch); $error = curl_error($ch); curl_close($ch); unset($ch); if (!empty($error)) { $this->write('程序抓取URL: '.$url.'发生错误,错误信息: '.$error); return false; } if (WEB_CHARSET != 'utf-8') $ret = iconv(WEB_CHARSET, 'utf-8', $ret); return $ret; } //when check finish,mysql connect will auto close private function check_mysql_connect() { $con = mysql_connect(DB_HOST, DB_USER, DB_PWD); if (!is_resource($con)) $this->write('程序无法成功链接到数据库,具体的错误信息:'.mysql_error(), true); if (!mysql_select_db(DB_NAME, $con)) $this->write('程序无法链接到数据库: '.DB_NAME.',具体的错误信息: '.mysql_error(), true); mysql_close($con); } private function check_curl_support() { if (!extension_loaded('curl') || !function_exists('curl_init')) return false; return true; } private function write($str, $end = false) { if (PATH_SEPARATOR == ':') echo $str,PHP_EOL,PHP_EOL; else echo iconv('UTF-8', 'GBK', $str),PHP_EOL,PHP_EOL; if ($end) die("program exit"); sleep(OUTPUT_SPEED); } }

标签:We

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

如何用PHP编写高效的长尾关键词采集工具?

PHP实现的Web采集神器,仅需简单配置,即可采集任意无严格验证的站点。支持扩展IP代理功能及伪原创功能。推荐站点:www.itziy.com、csdn免费下载器、pudn免费下载器、51cto免费。

如何用PHP编写高效的长尾关键词采集工具?

php实现的web采集神器,只需要通过简单配置,就可以采集任意没有严格校验的站点
可以扩展IP代理功能以及伪原创功能
推荐几个站点
www.itziy.comcsdn免积分下载器pudn免积分下载器51cto免积分下载器
www.94cto.com免费分享资源
www.verypan.com百度网盘搜索引擎

1.[代码][PHP]代码

<?php /** * 可以灵活配置使用的采集器 * 作者:Rain * 创建时间:2015-02-03 15:17:30 * 版本信息:V1.0 */ /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //数据库的相关配置信息,请根据您的数据库信息进行配置 define('DB_HOST', 'localhost'); define('DB_USER', 'root'); define('DB_PWD', 'test123456'); define('DB_NAME', 'test_dbname'); define('DB_CHARSET', 'utf8'); define('TABLE_NAME', 'tb_book'); //end //网站信息相关的配置,请根据具体需要采集的网站内容信息进行配置 define('WEB_CHARSET', 'gbk'); //变动的参数,使用%d进行替换,只支持数值形式的变动 define('WEB_LIST_URL', 'www.pcbookcn.com/book/1_%d.htm'); //分页的条数 define('PAGE_COUNT', 14); //从哪个页面开始抓取 define('PAGE_START', 1); //内容页的URL,使用正则模式,必须包含/,例如:/\/xuefu2008\/article\/details\/(\d)+/i define('WEB_CONTENT_URL_REG', '/\/book\/(\d)+\.htm/i'); //网站域名HOST信息,不包含末尾的/,例如:blog.csdn.net define('WEB_HOST', 'www.pcbookcn.com'); //列表页内容的精准定位,用来大致抓取一个列表页的内容显示模块位置,使用正则进行定位 define('WEB_LIST_POSTION', '/book_name\.gif(.*?)<td\swidth="15\%"\snowrap>/i'); //end //微调参数,通常不修改也不会影响您的正常使用 define('SLEEP_TIME', 1); define('IS_DEBUG', false); define('INSERT_DB', true); //内容的输出速度,单位:秒 define('OUTPUT_SPEED', 1); //end //需要过滤删除的文字,根据采集的网站类型进行设置,不区分大小写 $text_filter = array( '- 中华电脑书库' => '', '_电脑电子书' => '', '_电脑书籍' => '', '下载' => '', ); //表结构映射的配置 $table_mapping = array( //表字段名称 => 获取该字段的正则表达式,非空字段都必须在此设置映射关系,常量值请直接填写具体对应的值,无需使用正则 'size' => '/软件大小.*?000000>(.*?)<\/font>/i', 'logo' => 'www.94cto.com/indeximg.558idc.com/uploadfile/images/20150105/0b8461910de101cc51a07684cdab797e.jpg', 'field1' => '/<title>(.*?)<\/title>/i', 'field2' => '/软件简介.*?000000>(.*?)<\/font>/i', 'field3' => '1', 'field4' => '1', 'field5' => '1', 'field6' => '电子书,计算机,图像,图形', 'platform' => 'window/Linux', 'ishot' => '1', 'agreement' => '免费', 'downurl' => '/(\/down\.asp\?id=.*?)"/i', 'istop' => '1', ); /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// $ga = new Gather(); $ga->run(); class Gather { public function __construct() { $this->init_check(); } public function run() { global $table_mapping, $text_filter; for ($page = PAGE_START; $page <= PAGE_COUNT; $page++) { $this->write('开始采集列表第'.$page.'页的内容...'); $list_content = $this->get(sprintf(WEB_LIST_URL, $page)); if (empty($list_content)) { $this->write('抓取的列表页的内容为空,所以过滤掉'); continue; } $list_content = str_replace("\r", '', $list_content); $list_content = str_replace("\n", '', $list_content); //精准定位要抓取的模块内容 if (!preg_match(WEB_LIST_POSTION, $list_content, $list_search)) { $this->write('精准匹配列表页的内容失败,所以过滤掉'); continue; } if (isset($list_search[1])) $list_content = $list_search[1]; else $list_content = $list_search[0]; //end preg_match_all(WEB_CONTENT_URL_REG, $list_content, $match); if (is_array($match[0]) && !empty($match[0])) { $this->write('当前的列表页面,总共匹配到:'.count($match[0]).'个内容页'); foreach ($match[0] as $val) { if (strpos($val, 'www.baidu.com/search/spider.htm)"); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HTTPHEADER, $data); $ret = curl_exec($ch); $error = curl_error($ch); curl_close($ch); unset($ch); if (!empty($error)) { $this->write('程序抓取URL: '.$url.'发生错误,错误信息: '.$error); return false; } if (WEB_CHARSET != 'utf-8') $ret = iconv(WEB_CHARSET, 'utf-8', $ret); return $ret; } //when check finish,mysql connect will auto close private function check_mysql_connect() { $con = mysql_connect(DB_HOST, DB_USER, DB_PWD); if (!is_resource($con)) $this->write('程序无法成功链接到数据库,具体的错误信息:'.mysql_error(), true); if (!mysql_select_db(DB_NAME, $con)) $this->write('程序无法链接到数据库: '.DB_NAME.',具体的错误信息: '.mysql_error(), true); mysql_close($con); } private function check_curl_support() { if (!extension_loaded('curl') || !function_exists('curl_init')) return false; return true; } private function write($str, $end = false) { if (PATH_SEPARATOR == ':') echo $str,PHP_EOL,PHP_EOL; else echo iconv('UTF-8', 'GBK', $str),PHP_EOL,PHP_EOL; if ($end) die("program exit"); sleep(OUTPUT_SPEED); } }

标签:We