1. 云栖社区>
  2. PHP教程>
  3. 正文

抓取“全球 IC 采购网”供应商程序

作者:用户 来源:互联网 时间:2017-12-01 09:21:58

程序

抓取“全球 IC 采购网”供应商程序 - 摘要: 本文讲的是抓取“全球 IC 采购网”供应商程序,<?php /** * 抓取“全球 IC 采购网(http://www.qic.com.cn/)”供应商主程序 * author Lee. * Last modify $Date: 2012-2-7 09:35:21 $ */ req

<?php 
/** 
* 抓取“全球 IC 采购网(http://www.qic.com.cn/)”供应商主程序 
* author Lee. 
* Last modify $Date: 2012-2-7 09:35:21 $ 
*/ 
require_once './config.inc.php'; 
class qic{ 
    private $startId; 
    private $endId; 
     
    public function __construct() { 
        $this->startId = 27688; 
        $this->endId = 55185; 
    } 
     
    public function go() { 
        for ($i=$this->startId; $i<=$this->endId; $i++) { 
            $infoArr = $this->getInfoByUrl($this->getUrl($i)); 
            if (emptyempty($infoArr['company'])) continue; 
            $m = new Model(); 
            if ($m->isExists('qic', "company='{$infoArr['company']}'")) { 
                echo 'Data Exists!!'; continue; 
            } else { 
                if ($this->addInfoInDB($m, $infoArr)) { 
                    echo 'Add Success!!'; 
                } else { 
                    echo 'Add Faild!!'; 
                } 
            } 
        } 
    } 
     
    /**
     * 添加数据进数据库
     * @param Object $m
     * @param array $infoArr
     * @return Number
     */ 
    private function addInfoInDB($m ,$infoArr) { 
        $num = null; 
        $num = $m->insert('qic', array('company', 'person', 'phone', 'mobile', 'fax', 'qq', 'msn', 'email', 'address', 'website', 'shopUrl'), array($infoArr['company'], $infoArr['person'], $infoArr['phone'], $infoArr['mobile'], $infoArr['fax'], $infoArr['qq'], $infoArr['msn'], $infoArr['email'], $infoArr['address'], $infoArr['website'], $infoArr['shopUrl'])); 
        return $num; 
    } 
     
    /**
     * 根据供应商地址获取信息
     * @param string $re
     * @return ArrayObject
     */ 
    private function getInfoByUrl($url) { 
        $re = file_get_contents($url); 
        preg_match_all('/<p class=/"gs/-font/">(.*)<//p>/Usi', $re, $companyArr); 
        preg_match_all('/<li>/s*联 系 人:(.*)<//li>/Usi', $re, $personArr); 
        preg_match_all('/<li>/s*电 话:(.*)<//li>/Usi', $re, $phoneArr); 
        preg_match_all('/<li>/s*手 机:(.*)<//li>/Usi', $re, $mobileArr); 
        preg_match_all('/<li>/s*传 真:(.*)<//li>/Usi', $re, $faxArr); 
        preg_match_all('/<li>/s*QQ:(.*)<//li>/Usi', $re, $qqArr); 
        preg_match_all('/<li>/s*MSN:(.*)<//li>/Usi', $re, $msnArr); 
        preg_match_all('/<li>/s*邮 箱:(.*)<//li>/Usi', $re, $emailArr); 
        preg_match_all('/公司地址:(.*)<//li>/Usi', $re, $addressArr); 
        preg_match_all('/公司网址:(.*)<//li>/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 
        ); 
        return $infoArr; 
    } 
     
    /**
     * 获取页面内容
     * @param string $url
     * @return string
     */ 
    private function getContent($url) { 
        $re = file_get_contents($url); 
        return $re;  
    } 
     
    /**
     * 格式化字符串
     * @param string $str
     * @param string $type 类型
     * @return string
     */ 
    private function formatString($str, $type='default') { 
        $str = trim($str); 
        switch ($type) { 
            case 'default': 
                return emptyempty($str) ? '' : $str;  
                break; 
            case 'qm': # 处理QQ 
                if (emptyempty($str)) return ''; 
                preg_match_all('//'(.+)/'/si', $str, $arr); 
                return trim($arr[1][0]); 
                break; 
            case 'a': 
                $str = preg_replace('/<a.+>(.+)<//a>/', '/1', $str); 
                return $str; 
                break; 
            default: 
                return ''; 
                break; 
        } 
    } 
     
    /**
     * 获取供应商页面地址 www.th7.cn
     * @param int $shopId
     * @return string
     */ 
    private function getUrl($shopId) { 
        return "http://www.qic.com.cn/specialstore/tsh_{$shopId}.html";  
    } 
     

 
/*
 * 表结构
 CREATE TABLE `qic` (
    `id` mediumint(8) unsigned NOT NULL auto_increment,
    `company` 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,
    `address` varchar(500) NOT NULL,
    `website` varchar(500) NOT NULL,
    `shopUrl` varchar(200) NOT NULL,
    PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
 * */ 
 
$q = new qic(); 
$q->go(); 
?> 

摘自 Lee.的专栏

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索程序 , ,以便于您获取更多的相关知识。

弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率

40+云计算产品,6个月免费体验

稳定可靠、可弹性伸缩的在线数据库服务,全球最受欢迎的开源数据库之一

云服务器9.9元/月,大学必备