迅?;疖囶^接口代碼
采集工具:火車采集器(可以百度搜索一下這個工具的下載)
采集模塊:新聞 News
第一步、編寫采集入庫腳本接口
新建:/api/caiji.php (應用于URL地址請求,大小寫隨意)
如果根目錄沒有api文件夾,就創建到 /public/api/caiji.php (應用于URL地址請求,大小寫隨意)
<?php
/**
* 數據采集
*/
define('IS_API', basename(__FILE__, '.php')); // 項目標識
define('SELF', pathinfo(__FILE__, PATHINFO_BASENAME)); // 該文件的名稱
require('../index.php'); // 引入主文件
新建:./dayrui/My/Api/Caiji.php(首字母必須大寫,最終php文件命名與上面的名稱保持相同)
<?php
$this->_module_init('news'); // news 是模塊目錄
if ($_GET['action'] == 'category') {
$this->module['category'] = \Phpcmf\Service::L('category', 'module')->get_category($this->module['share'] ? 'share' : $this->module['dirname']);
if (!$this->module['category']) {
echo '模塊【'.$this->module['dirname'].'】沒有創建欄目';
}
foreach ($this->module['category'] as $t) {
if ($t['child'] == 0 && $t['tid'] == 1) {
echo '<h1>'.$t['name'].'<=>'.$t['id'].'</h1>'.PHP_EOL;
}
}
} else {
// 入庫數據
$data = $_REQUEST;
// 發布者id 1
$data['uid'] = 1;
// 發布者筆名 admin
$data['author'] = 'admin';
// 主表字段
$fields[1] = $this->get_cache('table-'.SITE_ID, $this->content_model->dbprefix(SITE_ID.'_'.MOD_DIR));
$cache = $this->get_cache('table-'.SITE_ID, $this->content_model->dbprefix(SITE_ID.'_'.MOD_DIR.'_category_data'));
$cache && $fields[1] = array_merge($fields[1], $cache);
// 附表字段
$fields[0] = $this->get_cache('table-'.SITE_ID, $this->content_model->dbprefix(SITE_ID.'_'.MOD_DIR.'_data_0'));
// 去重復
$fields[0] = array_unique($fields[0]);
$fields[1] = array_unique($fields[1]);
// 格式化入庫字段
// 一般是格式化非文本類的字段(例如多文件上傳、復選框、聯動字段等等)
// 這里需要按采集資料的格式入庫格式化字段,
// 開始歸類存儲
$save = [];
// 主表附表歸類
foreach ($fields as $ismain => $field) {
foreach ($field as $name) {
isset($data[$name]) && $save[$ismain][$name] = $data[$name];
}
}
if (!$data['catid']) {
exit('欄目為空');
}
$save[1]['uid'] = $save[0]['uid'] = $data['uid'];
$save[1]['catid'] = $save[0]['catid'] = $data['catid'];
$save[1]['url'] = ''; // 地址留空,系統會自動生成
$save[1]['status'] = 9; //9表示正常發布,1表示審核里面
$save[1]['hits'] = 0; // 閱讀數
$save[1]['displayorder'] = 0; // 排序權重值,默認填寫0
$save[1]['link_id'] = 0; // 填寫0不管他
$save[1]['inputtime'] = SYS_TIME; // 發布時間設置成為當前時間
$save[1]['updatetime'] = SYS_TIME; // 更新時間也設置成為當前時間,關于時間采集如果是這種格式2022-12-12xx,那么需要使用strtotime函數轉換成時間戳入庫
$save[1]['inputip'] = '127.0.0.1'; // 發布者ip地址
//$save[1]['keywords'] = dr_get_keywords( $save[1]['title']); // 按插件提取關鍵詞
//$save[1]['description'] = dr_get_description( $save[0]['content'], 100); // 在內容里面提取100個子作為描述
// 驗證標題重復
if ($this->content_model->table(SITE_ID.'_'.MOD_DIR)->where('title', $save[1]['title'])->counts()) {
echo '重復';exit;
}
$rt = $this->content_model->save_content(0, $save);
if ($rt['code']) {
/*
// 用于發布成功后生成靜態文件代碼
//dr_html_auth($_SERVER['SERVER_ADDR']);
//dr_catcher_data(SITE_URL.'index.php?s='.MOD_DIR.'&c=html&m=showfile&id='.$rt['id']);
$atcode = 'chtml_'.SITE_ID.'_'.MOD_DIR.'_'.$rt['code'];
\Phpcmf\Service::L('cache')->set_auth_data($atcode, $rt['code'], SITE_ID);
dr_catcher_data(SITE_URL.'index.php?s='.MOD_DIR.'&c=html&m=showfile&id='.$rt['code'].'&atcode='.$atcode);
$save[1]['id'] = $save[0]['id'] = $rt['code'];
\Phpcmf\Service::L('router')->show_url(\Phpcmf\Service::C()->module, $save[1]);
*/
exit('成功');
} else {
exit('失敗');
}
}
exit;
腳本文件中可以定義發布者等一些預定義字段默認值,如果你不會php的話可以保持默認
注意:本腳本的程序代碼只對內容等字段入庫有效,由于采集目標網站的數據規范性無法做到統一;
如果開發者對其他字段(例如多文件上傳、復選框、聯動字段等等)需要開發者自己根據采集的實際情況來編寫入庫程序來組裝入庫的POST數據,需要PHP開發技術基礎,下面來舉一些基礎例子。
1、多文件上傳字段
$data['字段名稱'] = dr_array2string([
['file'=>'文件路徑', 'title'=>'標題'],
]);
2、復選框字段
$data['字段名稱'] = dr_array2string([
'值1', '值2'
]);
測試規則地址:
http://你的網站/api/caiji.php?action=category
如果能顯示出來欄目信息,說明ok了
如果顯示api file is error,表示你./dayrui/My/Api/Caiji.php沒有創建正確。
第二步、火車采集器編寫web發布規則
第三步、新建一個在線發布模塊
第四步、填寫獲取欄目列表的參數
image.png
/api/caiji.php?action=category
<h1>[分類名稱]<=>[分類ID]</h1>
按照上面的格式寫就ok了
第五步、內容發布規則參數
image.png
發布地址:/api/caiji.php?action=post
表單參數:這里是你采集的字段
c錯誤碼:失敗 回車符 重復
成功標志碼:成功
表單參數:這里可以配置任意自定義字段的入庫,不知道入庫格式怎么辦?
查看數據庫儲存數據格式進行入庫處理,必要時需要在接口文件中重新編程
第六步、保存模塊
第七步、然后返回web發布配置里面
按照圖中的參數配置,點“獲取欄目”,如果可以獲取到就表示成功了一大半了
第八步、測試入庫發布
第九步、后臺查看采集內容
QQ20161021-8@2x.png
如果您的問題還未解決可以聯系站長付費協助。

有問題可以加入技術QQ群一起交流學習
本站vip會員 請加入無憂模板網 VIP群(50604020) PS:加入時備注用戶名或昵稱
普通注冊會員或訪客 請加入無憂模板網 技術交流群(50604130)
客服微信號:15898888535
聲明:本站所有文章資源內容,如無特殊說明或標注,均為采集網絡資源。如若內容侵犯了原著者的合法權益,可聯系站長刪除。