www.xuxule.com 全站采集程序
把歌手。歌手档案。专集。介绍图片等下载来。
还有歌词。这网站没有音乐文件的。
<?PHP
define('ROOT_PATH', './');
require_once(ROOT_PATH.'Includes/Global.php');
set_time_limit(0);
#把下边的数据先导进数据库。再设置xuxule2.php里边放图片的目录就行了。先运行本程序。本程序先把专集列表抓下来。再更新专集里边其他信息及抓取歌词。你可以把2个文件合成一个。
#本程序随便写的。你需要把类改成MYSQL直接执行方式就行了。其他不用改。请有空的帮处理一下。可以随便用。没版权什么之说。
/*
CREATE TABLE `xl_lyric` (
`lyricID` int(10) unsigned NOT NULL auto_increment,
`Name` varchar(120) NOT NULL default '',
`songerID` int(10) unsigned NOT NULL default '0',
`songerName` varchar(50) NOT NULL default '',
`specialID` int(10) unsigned NOT NULL default '0',
`specialName` varchar(120) NOT NULL default '',
`lyric` text NOT NULL,
`createDate` int(10) unsigned NOT NULL default '0',
UNIQUE KEY `lyricID` (`lyricID`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;
CREATE TABLE `xl_songer` (
`songerID` smallint(6) unsigned NOT NULL auto_increment,
`songerName` varchar(50) NOT NULL default '',
`enName` varchar(100) NOT NULL default '',
`str` varchar(50) NOT NULL default '',
`specialNum` tinyint(4) unsigned NOT NULL default '0',
`musicNum` smallint(6) unsigned NOT NULL default '0',
`description` varchar(255) NOT NULL default '',
`typeID` tinyint(2) unsigned NOT NULL default '0',
`typeName` varchar(20) NOT NULL default '',
`firstP` char(2) NOT NULL default 'a',
`usersID` smallint(6) unsigned NOT NULL default '0',
`viewNum` int(10) unsigned NOT NULL default '0',
`vote` mediumint(8) unsigned NOT NULL default '0',
`commentNum` smallint(6) unsigned NOT NULL default '0',
`hotNum` int(11) unsigned NOT NULL default '0',
`isPublic` enum('y','n') NOT NULL default 'y',
`createDate` int(11) unsigned NOT NULL default '0',
UNIQUE KEY `songerID` (`songerID`),
KEY `songerID_2` (`songerID`),
KEY `songerName` (`songerName`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;
CREATE TABLE `xl_special` (
`specialID` mediumint(8) unsigned NOT NULL auto_increment,
`typeID` tinyint(2) unsigned NOT NULL default '0',
`typeName` varchar(20) NOT NULL default '',
`specialName` varchar(100) NOT NULL default '',
`enName` varchar(255) NOT NULL default '',
`str` varchar(30) NOT NULL default '',
`description` text NOT NULL,
`songerName` varchar(50) NOT NULL default '',
`songerID` smallint(6) unsigned NOT NULL default '0',
`language` varchar(50) NOT NULL default '',
`date` varchar(30) NOT NULL default '',
`company` varchar(200) NOT NULL default '',
`musicNum` tinyint(3) unsigned NOT NULL default '0',
`viewNum` int(10) unsigned NOT NULL default '0',
`picture` varchar(200) NOT NULL default '',
`vote` mediumint(8) unsigned NOT NULL default '0',
`commentNum` smallint(6) unsigned NOT NULL default '0',
`createDate` int(11) unsigned NOT NULL default '0',
UNIQUE KEY `specialID_2` (`specialID`),
KEY `specialID` (`specialID`),
KEY `specialName` (`specialName`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;
*/
for ($i=1989;$i<=2005;$i++)//1989-2005
{
$url = "http://www.xuxule.com/update.asp?y=".$i;
$File = @file_Get_contents($url);
if ( $File )
{
preg_match("/共有<b>(\d+)<\/b>页/",$makeFile,$pages);#page num
for ($p=1;$p<=$pages[1];$p++)
{
$url = "http://www.xuxule.com/update.asp?y=".$i."&page=".$p;
$File = @file_Get_contents($url);
if ( $File )
{
preg_match_all("/cd\.asp\?cdID=(.{1,30})><b>(.{1,100})<\/b><\/a>/",$makeFile,$name);#special name
preg_match_all("/singer_cd\.asp\?pyab=(.{1,30})>(.{1,50})<\/a>/",$makeFile,$singer);#singer
preg_match_all("/<font color=\"#666666\">([0-9]{1,4})<\/font>/",$makeFile,$num);#music num
for ($j=0;$j<count($name[1]);$j++)
{
#get singer ID
$SQL = " SELECT songerID FROM xl_songer WHERE songerName='".addslashes($singer[2][$j])."' ";
$Row = $DB->queryFirstRow($SQL);
if ( $Row['songerID'] == 0 )
{
$SQL = " INSERT INTO xl_songer SET songerName='".addslashes($singer[2][$j])."',str='".$singer[1][$j]."',musicNum='".$num[1][$j]."',specialNum='1',createDate='".time()."' ";
$DB->query($SQL);
$songerID = $DB->_GetInsertID();
}
else
{
$SQL = " UPDATE xl_songer SET musicNum=musicNum+".$num[1][$j].",specialNum=specialNum+1 WHERE songerName='".addslashes($songerName[1][$j])."' ";
$DB->query($SQL);
$songerID = $Row['songerID'];
}
#insert special
$SQL = " INSERT INTO xl_special SET str='".$name[1][$j]."',specialName='".addslashes($name[2][$j])."',songerID='$songerID',songerName='".addslashes($singer[2][$j])."',musicNum='".$num[1][$j]."',createDate='".time()."' ";
$DB->query($SQL);
UpdateOrderID('special');#get special last ID
$specialID = $lastOrderID;
echo $SQL."<BR><bR>";
}
}
}
}
}
?>