百度收集自動推送腳本——python版


做網站的過程中,網站做出來容易,把網站推廣出去就難了,其中第一步就是需要各大搜索引擎,如百度,谷歌,360和搜狗等對我們的網站進行收錄,鏈接提交方面,其實各大網站斗差不多,基本上都有sitemap提交,但百度網站收錄除了sitemap提交之外,還提供了主動推送和自動推送。

所謂的自動推送實際上就一被動技能,在每個網站上寫入特定的JS代碼,當有人訪問網頁時,JS代碼就將當前未被收錄的網頁推送到百度服務器,完成收錄,其腳本如下:

<script>
(function(){
    var bp = document.createElement('script');
    var curProtocol = window.location.protocol.split(':')[0];
    if (curProtocol === 'https') {
        bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
    }
    else {
        bp.src = 'http://push.zhanzhang.baidu.com/push.js';
    }
    var s = document.getElementsByTagName("script")[0];
    s.parentNode.insertBefore(bp, s);
})();
</script>

 

將這段JS代碼復制到每個網頁,就可以實現自動推送的功能了。

而主動推送比較有意思,目前百度只提供了curl, php, ruby程序示例,沒有Python版本。主動推送每天最多可以推送10萬條url

按照百度提供的信息,其實python版本也相對容易編寫。

首先登陸百度搜索資源平台,然后在鏈接提交里找到自動推送接口,如我的網站推送接口:

接着就使用這個推送接口文件進行python程序編寫,另外需要准備一個sitemap文件,網站所有的url都從sitemap中讀取,當然如果有url列表也可以直接從url列表中讀取。

 

# base on python 3.7

import requests
import re
import time

def push_urls(urls):

    url = "你的百度推送接口"
    
    headers = {
        'User-Agent': 'curl/7.12.1',
        'Host': 'data.zz.baidu.com',
        'Content - Type': 'text / plain',
        'Content - Length': '83',
        'charset':'gbk',
    }
    
    try:
        response = requests.post(url, headers=headers, data=urls, timeout=5).text
        return response
    except Exception as e:
        print(e)
    
    
def auto_push_urls():
    remain_push_count = 100000
    push_count = 0
    start_number = 608006
   
    actual_push_url = 0
   
    # open a sitemap
    try:
        with open("sitemap.xml", "r", encoding="utf-8") as f:
            source_links = f.readlines()
            
    except Exception as e:
        
        print(e)
        
    else:
        for link in source_links[start_number]:
            
            url = re.findall('<loc>(.*?)</loc>', link)
            
            if url !=[]:
                target_url = url[0].encode("utf-8")
                response = push_urls(target_url)
#                 print(url[0])
                print(f"psuh a url:{target_url}, {response}")
                
                push_count += 1
                actual_push_url += 1
                
                if push_count > remain_push_count:
                    break
                
    return actual_push_url

if __name__ =="__main__":
    
    print("start pushing urls ...")
    
    pushed_url_number = auto_push_urls()
    
    print(f"complete pushing urls: {pushed_url_number} ...")  

 

推送成功后,接口返回一個字典列表,含剩余url數目"remain":99999,推送成功數目:"success":1

{"remain":100000,"success":0,"not_same_site":["smwap.bodamn120.com/zt/zixun/"]}

如失敗,則返回具體失敗原因:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM