源码之家,精品网站源码、商业源码、免费源码、网站源代码下载网站
分类导航

源码动态|PHP源码|ASP源码|.NET源码|HTML源码|商业源码|游戏源码|

服务器之家 - 源码之家 - 源码动态 - 海洋CMS整合自动百度推送API的实现方法

海洋CMS整合自动百度推送API的实现方法

2021-01-13 23:01源码之家 源码动态

当你在百度站长平台提交网站后,百度也会提示你去主动推送URL让蜘蛛第一时间去抓取收录,收录上去了,SEO才有希望。对于海洋CMS专门做影视的程序,百度自动推送URL的功能并不完善,所以做一下教程来实现。

做网站最重要的其中一环肯定是收录,页面没有收录,其他都是空谈,更不会有搜索流量。由于每个行业的网站众多,如何让搜索引擎第一时间发现你的网站页面并且收录呢,百度的主动推送操作不能丢。每当你在百度站长平台提交网站后,百度也会提示你去主动推送URL让蜘蛛第一时间去抓取收录,收录上去了,SEO才有希望。对于海洋CMS专门做影视的程序,百度自动推送URL的功能并不完善,所以做一下教程来实现。

1、在根目录新建一个map目录;

2、在map目录里新建一个index.php,文件代码内容如下:

  1. <?php 
  2. require_once(dirname(__FILE__)."/../include/common.php"); 
  3. //前置跳转start 
  4. $cs=$_SERVER["REQUEST_URI"]; 
  5. if($GLOBALS['cfg_mskin']==3 AND $GLOBALS['isMobile']==1){header("location:$cfg_mhost$cs");} 
  6. if($GLOBALS['cfg_mskin']==4 AND $GLOBALS['isMobile']==1){header("location:$cfg_mhost");} 
  7. //前置跳转end 
  8. require_once(sea_INC."/main.class.php"); 
  9.  
  10. header('Content-Type:text/xml;charset=UTF-8'); 
  11.  
  12. if($GLOBALS['cfg_runmode']==2||$GLOBALS['cfg_paramset']==0){ 
  13. $paras=str_replace(getfileSuffix(),'',$_SERVER['QUERY_STRING']); 
  14. if(strpos($paras,"-")>0){ 
  15. $parasArray=explode("-",$paras); 
  16. $tid=$parasArray[0]; 
  17. $page=$parasArray[1]; 
  18. }else
  19. $tid=intval($paras); 
  20. $page=1; 
  21. $tid = isset($tid) && is_numeric($tid) ? $tid : 0; 
  22. $page = isset($page) && is_numeric($page) ? $page : 1; 
  23. }else
  24. $tid = $$GLOBALS['cfg_paramid']; 
  25. $page = $$GLOBALS['cfg_parampage']; 
  26. $tid = isset($tid) && is_numeric($tid) ? $tid : 0; 
  27. $page = isset($page) && is_numeric($page) ? $page : 1; 
  28. $tid=intval($tid); 
  29. $page=intval($page); 
  30. //if($tid==0){ 
  31. // showmsg('参数丢失,请返回!', -1); 
  32. // exit; 
  33. //} 
  34. $GLOBALS[tid]=$tid; 
  35. echoChannel($tid); 
  36.  
  37. function echoChannel($typeId) 
  38. global $dsql,$cfg_iscache,$mainClassObj,$page,$t1,$cfg_user,$cfg_basehost; 
  39. $channelTmpName=getTypeTemplate($typeId); 
  40. $channelTmpName=empty($channelTmpName) ? "channel.html" : $channelTmpName; 
  41. $channelTemplatePath = "/map/channel.html"
  42. if($GLOBALS['cfg_mskin']!=0 AND $GLOBALS['cfg_mskin']!=3 AND $GLOBALS['cfg_mskin']!=4 AND $GLOBALS['isMobile']==1) 
  43. {$channelTemplatePath = "/map/channel.html";} 
  44. //if (strpos(" ,".getHideTypeIDS().",",",".$typeId.",")>0) exit("<font color='red'>视频列表为空或被隐藏</font><br>"); 
  45. //if ($cfg_user == 1){ 
  46. // if (!getUserAuth($typeId, "list")){ShowMsg("您当前的会员级别没有权限浏览此内容!","../member.php",0,20000);exit();} 
  47. //} 
  48. $pSize = getPageSizeOnCache($channelTemplatePath,"channel",$channelTmpName); 
  49. if (empty($pSize)) $pSize=12; 
  50. $typeIds = getTypeId($typeId); 
  51. $typename=getTypeName($typeId); 
  52. if($typeId!=""
  53. $extrasql = " or FIND_IN_SET('".$typeId."',v_extratype)<>0 "
  54. else 
  55. $extrasql = ""
  56. $sql="select count(*) as dd from sea_data where (tid in (".$typeIds.") ".$extrasql.")"
  57. $row = $dsql->GetOne($sql); 
  58. if(is_array($row)) 
  59. $TotalResult = $row['dd']; 
  60. else 
  61. $TotalResult = 0; 
  62. $pCount = ceil($TotalResult/$pSize); 
  63. $currentTypeId = $typeId; 
  64. $cacheName = "parse_channel_".$currentTypeId.$GLOBALS['cfg_mskin'].$GLOBALS['isMobile']; 
  65. if($cfg_iscache){ 
  66. if(chkFileCache($cacheName)){ 
  67. $content = getFileCache($cacheName); 
  68. }else
  69. $content = parseChannelPart($channelTemplatePath,$currentTypeId); 
  70. $content = str_replace("{channelpage:typename}",$typename,$content); 
  71. $content = str_replace("{channelpage:typeid}",$currentTypeId,$content); 
  72. setFileCache($cacheName,$content); 
  73. }else
  74. $content = parseChannelPart($channelTemplatePath,$currentTypeId); 
  75. $content = str_replace("{channelpage:typename}",$typename,$content); 
  76. $content = str_replace("{channelpage:typeid}",$currentTypeId,$content); 
  77. $content = str_replace("{channelpage:page}",$page,$content); 
  78. $content=$mainClassObj->ParsePageList($content,$typeIds,$page,$pCount,$TotalResult,"channel",$currentTypeId); 
  79. $content=$mainClassObj->parseIf($content); 
  80. $content=str_replace("{seacms:member}",front_member(),$content); 
  81. $content = str_replace("{channelpage:order-hit-link}",$cfg_basehost."/search.php?page=1&searchtype=5&order=hit&tid=".$typeId,$content); 
  82. $content = str_replace("{channelpage:order-hitasc-link}",$cfg_basehost."/search.php?page=1&searchtype=5&order=hitasc&tid=".$typeId,$content); 
  83.  
  84. $content = str_replace("{channelpage:order-id-link}",$cfg_basehost."/search.php?page=1&searchtype=5&order=id&tid=".$typeId,$content); 
  85. $content = str_replace("{channelpage:order-idasc-link}",$cfg_basehost."/search.php?page=1&searchtype=5&order=idasc&tid=".$typeId,$content); 
  86.  
  87. $content = str_replace("{channelpage:order-time-link}",$cfg_basehost."/search.php?page=1&searchtype=5&order=time&tid=".$typeId,$content); 
  88. $content = str_replace("{channelpage:order-timeasc-link}",$cfg_basehost."/search.php?page=1&searchtype=5&order=timeasc&tid=".$typeId,$content); 
  89.  
  90. $content = str_replace("{channelpage:order-commend-link}",$cfg_basehost."/search.php?page=1&searchtype=5&order=commend&tid=".$typeId,$content); 
  91. $content = str_replace("{channelpage:order-commendasc-link}",$cfg_basehost."/search.php?page=1&searchtype=5&order=commendasc&tid=".$typeId,$content); 
  92.  
  93. $content = str_replace("{channelpage:order-score-link}",$cfg_basehost."/search.php?page=1&searchtype=5&order=score&tid=".$typeId,$content); 
  94. $content = str_replace("{channelpage:order-scoreasc-link}",$cfg_basehost."/search.php?page=1&searchtype=5&order=scoreasc&tid=".$typeId,$content); 
  95.  
  96. echo str_replace("{seacms:runinfo}",getRunTime($t1),$content) ; 
  97.  
  98. function parseChannelPart($templatePath,$currentTypeId) 
  99. global $mainClassObj; 
  100. $content=loadFile(sea_ROOT.$templatePath); 
  101. $content=$mainClassObj->parseTopAndFoot($content); 
  102. $content = str_replace("{seacms:currenttypeid}",$currentTypeId,$content); 
  103. $content=$mainClassObj->parseSelf($content); 
  104. $content=$mainClassObj->parseHistory($content); 
  105. $content=$mainClassObj->parseGlobal($content); 
  106. $content=$mainClassObj->parseMenuList($content,"",$currentTypeId); 
  107. $content=$mainClassObj->parseAreaList($content); 
  108. $content=$mainClassObj->parseVideoList($content,$currentTypeId); 
  109. $content=$mainClassObj->parseNewsList($content,$currentTypeId); 
  110. $content=$mainClassObj->parseTopicList($content); 
  111. $content = str_replace("{channelpage:typetext}",getTypeText($currentTypeId),$content); 
  112. $content = str_replace("{channelpage:keywords}",getTypeKeywords($currentTypeId),$content); 
  113. $content = str_replace("{channelpage:description}",getTypeDescription($currentTypeId),$content); 
  114. $content = str_replace("{channelpage:title}",getTypeTitle($currentTypeId),$content); 
  115. return $content; 
  116. ?> 

3、在map目录下新建一个channel.html文件,代码内容如下:

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <urlset> 
  3. {seacms:channellist size=2000 order=time} 
  4. <url> 
  5. <loc>{seacms:siteurl}[channellist:link]</loc> 
  6. <lastmod>[channellist:time style=yyyy-mm-dd]</lastmod> 
  7. <changefreq>daily</changefreq> 
  8. <priority>0.8</priority> 
  9. </url> 
  10. {/seacms:channellist} 
  11. </urlset> 

4、从xml文件取数据并做百度主动推送,代码如下:

  1. #coding:utf-8 
  2. import requests,time,re,os 
  3. import sys 
  4. reload(sys) 
  5. sys.setdefaultencoding('utf-8'
  6.  
  7. def main(): 
  8. # 删掉yesterday文件 
  9. # if os.path.exists('yesterday.txt'): 
  10. # os.remove('yesterday.txt') 
  11.  
  12. #把xml中的数据拿下来,并和现有的数据去重后,留下的数据单独放到一个文件,并且追加到所有的url txt里 
  13. url = 'http://yp.jd.com/00/00_0.xml' 
  14.  
  15. r = requests.get(url) 
  16. zhishi_url = re.findall(r'<loc>(.*?)</loc>',r.content) 
  17. has_push_list = [url.strip() for url in open('all_url.txt')] 
  18. f = open('all_url.txt',r'a+')#所有的url 
  19. f_ytd = open('yesterday_0.txt',r'w+')#昨天发布的文章url 
  20. f_ytd_m = open('yesterday_m_0.txt',r'w+')#昨天发布的文章url(m) 
  21.  
  22. num = 0 
  23. txt_index = 0 
  24. for link in zhishi_url:#多 
  25. if link in has_push_list: 
  26. pass 
  27. else
  28. f.write(link+'\n')#追加到所有的url txt里 
  29. f_ytd.write(link+'\n')#把还未推送的url放到单独的文件内 
  30. f_ytd_m.write(link.replace('www','m')+'\n')#把还未推送的url放到单独的文件内(m) 
  31.  
  32. if num%2000 == 1999: 
  33. f_ytd.close() 
  34. txt_index += 1 
  35. f_ytd = open('yesterday_%s.txt'%txt_index,r'w+'
  36. f_ytd_m = open('yesterday_m_%s.txt'%txt_index,r'w+'
  37. num += 1 
  38.  
  39. f.close() 
  40. f_ytd.close() 
  41. f_ytd_m.close() 
  42. print 'yesterday has %s'%num 
  43. print 'crawl done' 
  44.  
  45. time.sleep(5) 
  46.  
  47. #开始推送 
  48. print 'push begin' 
  49. for i in range(0,txt_index+1): 
  50. try
  51. headers = {'Content-Type':'text/plain'
  52. url = 'http://data.zz.baidu.com/urls' 
  53. params = {'site':'www.jd.com','token':'00'}#,'type':'original' 
  54. r = requests.post(url,params=params,headers=headers,data=open('yesterday_%s.txt'%i,r'rb').read()) 
  55.  
  56. #m 
  57. params_m = {'site':'m.jd.com','token':'00'}#,'type':'original' 
  58. r_m = requests.post(url,params=params_m,headers=headers,data=open('yesterday_m_ 
  59.  
  60. %s.txt'%i,r'rb').read()) 
  61. print 'PC:'+r.content+','+'M:'+r_m.content 
  62.  
  63. except Exception,e: 
  64. print e 
  65. continue 
  66. print 'Finish!!!' 
  67.  
  68. if __name__ == '__main__'
  69. while True: 
  70. current_time = time.localtime(time.time()) 
  71. if((current_time.tm_hour == 18) and (current_time.tm_min == 0) and (current_time.tm_sec == 0)): 
  72. main() 

百度自动推送的好处就是主动,而sitemap的操作是被动,需要搜索引擎蜘蛛主动去抓。但是需要注意的一点是,自动推送不要重复去推,会影响蜘蛛抓取,浪费蜘蛛资源。除了要推送,还有个要注意的地方,海洋CMS的演员链接是动态的URL,并不利于SEO,海洋CMS伪静态位置好尤其重要.

延伸 · 阅读

精彩推荐