/**
* 「グローバル IC 調達ネットワーク (http://www.qic.com.cn/)」サプライヤー メイン プログラムを取得します
*著者リー
* 最終変更 $Date: 2012-2-7 09:35:21 $
*/
require_once './config.inc.php';
クラスクイック{
プライベート $startId;
プライベート $endId;
パブリック関数 __construct() {
$this->startId = 27688;
$this->endId = 55185;
}
パブリック関数 go() {
for ($i=$this->startId; $i<=$this->endId; $i++) {
$infoArr = $this->getInfoByUrl($this->getUrl($i));
if (emptyempty($infoArr['company'])) 続行;
$m = 新しいモデル();
if ($m->isExists('qic', "company='{$infoArr['company']}'")) {
echo 'データは存在します!!';続く;
} その他 {
if ($this->addInfoInDB($m, $infoArr)) {
echo '追加成功!!';
} その他 {
echo '追加に失敗しました!!';
}
}
}
}
/**
* データベースにデータを追加します
* @param オブジェクト $m
* @param 配列 $infoArr
* @return 番号
*/
プライベート関数 addInfoInDB($m ,$infoArr) {
$num = null;
$num = $m->insert('qic', array('会社', '個人', '電話', '携帯電話', 'FAX', 'qq', 'msn', '電子メール', '住所', 'website', 'shopUrl'), array($infoArr['company'], $infoArr['person'], $infoArr['phone'], $infoArr['mobile'], $infoArr['fax ']、$infoArr['qq']、$infoArr['msn']、$infoArr['メール']、$infoArr['アドレス']、$infoArr['ウェブサイト']、$infoArr['shopUrl'] ));
$num を返します。
}
/**
* サプライヤーの住所に基づいて情報を取得します
* @param string $re
* @return ArrayObject
*/
プライベート関数 getInfoByUrl($url) {
$re = file_get_contents($url);
preg_match_all('/
(.*)
/Usi', $re, $companyArr);
preg_match_all('/
s*联系人:(.*)/Usi', $re, $personArr);
preg_match_all('/
s*電報:(.*)/Usi', $re, $phoneArr);
preg_match_all('/
s*手机:(.*)/Usi', $re, $mobileArr);
preg_match_all('/
s*传 真:(.*)/Usi', $re, $faxArr);
preg_match_all('/
s*QQ:(.*)/Usi', $re, $qqArr);
preg_match_all('/
s*MSN:(.*)/Usi', $re, $msnArr);
preg_match_all('/
s*邮箱:(.*)/Usi', $re, $emailArr);
preg_match_all('/公司地址:(.*)/Usi', $re, $addressArr);
preg_match_all('/公司网址:(.*)/Usi', $re, $websiteArr);
$infoArr = array(
'company'=>$this->formatString($companyArr[1][0]),
'person'=>$this->formatString($personArr[1][0]),
'phone'=>$this->formatString($phoneArr[1][0]),
'mobile'=>$this->formatString($mobileArr[1][0]),
'fax'=>$this->formatString($faxArr[1][0]),
'qq'=>$this->formatString($qqArr[1][0], 'qm'),
'msn'=>$this->formatString($msnArr[1][0], 'qm'),
'email'=>$this->formatString($emailArr[1][0]),
'address'=>$this->formatString($addressArr[1][0]),
'website'=>$this->formatString($websiteArr[1][0], 'a'),
'shopUrl'=>$url
);
$infoArr を返します。
}
/**
* ページのコンテンツを取得します
* @param string $url
* @戻り文字列
*/
プライベート関数 getContent($url) {
$re = file_get_contents($url);
$re を返します。
}
/**
* フォーマット文字列
* @param 文字列 $str
* @param string $type タイプ
* @戻り文字列
*/
プライベート関数 formatString($str, $type='default') {
$str = トリム($str);
スイッチ ($type) {
ケース「デフォルト」:
空の空($str)を返しますか? '' : $str;
壊す;
case 'qm': # 处理QQ
if (emptyempty($str)) は ''; を返します。
preg_match_all('/'(.+)'/si', $str, $arr);
トリムを返します($arr[1][0]);
壊す;
ケース「a」:
$str = preg_replace('/
(.+)/', '1', $str);
$str を返します。
壊す;
デフォルト:
戻る '';
壊す;
}
}
/**
* サプライヤーページのアドレスを取得 www.2cto.com
* @param int $shopId
* @戻り文字列
*/
プライベート関数 getUrl($shopId) {
"http://www.qic.com.cn/specialstore/tsh_{$shopId}.html" を返します。
}
}
/*
* 表结构
テーブル `qic` を作成 (
`id` mediaint(8) unsigned NOT NULL auto_increment,
`会社` varchar(500) NOT NULL,
`person` varchar(500) NOT NULL,
`phone` varchar(300) NOT NULL,
`mobile` varchar(300) NOT NULL,
`fax` varchar(300) NOT NULL,
`qq` varchar(300) NOT NULL,
`msn` varchar(500) NOT NULL,
`email` varchar(500) NOT NULL,
`アドレス` varchar(500) NOT NULL,
`ウェブサイト` varchar(500) NOT NULL,
`shopUrl` varchar(200) NOT NULL,
主キー (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
* */
$q = 新しい qic();
$q->go();
?>
摘自 Lee.的专栏
http://www.bkjia.com/PHPjc/478402.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/478402.html技術記事 ?php /*** グローバル IC 調達ネットワーク (http://www.qic.com.cn/) のサプライヤー メイン プログラムをキャプチャ * 著者 Lee * 最終変更 $Date: 2012-2-7 09:35:21 $*/ require_once ./config.inc.php;クラスの気...