Python百度url主动推送

你问我答:使用主动推送功能会达到怎样效果?
及时发现:可以缩短百度爬虫发现您站点新链接的时间,使新发布的页面可以在第一时间被百度收录
保护原创:对于网站的最新原创内容,使用主动推送功能可以快速通知到百度,使内容可以在转发之前被百度发现
脚本功能,从sitemap获取url,并实现主动推送功能,不会sitemap制作点python百万sitemap制作
posturl.py

#-*- coding: utf-8 -*-
import requests
import re

__Author__ = 'Kxrr' #原作者,github上看到有有懒得自己写了,懒癌晚期
__Verson__ = 0.1

class Pbs(object):
    def __init__(self, urlSitemap, urlPost):
        self.urlSitemap = urlSitemap
        self.urlPost = urlPost
        self.HEADERS_POST = {
            "User-Agent": "curl/7.12.1",
            "Host": "data.zz.baidu.com",
            "Content-Type": "text/plain",
            "Content-Length": "83"
        }
        self.f = open('_urlPosted.txt', 'a+')
        self.fContent = self.f.read()
        self.f.close()

    def getSitemap(self):
        self.responseSitemap = requests.get(self.urlSitemap)
        self.listSitemap = re.findall('<loc>(.*?)</loc>', self.responseSitemap.content, re.S)

    def sortList(self):
        self.g = open('_urlPosted.txt', 'a+')

    def postSitemap(self):
        for self.eachUrl in self.listSitemap:
            if self.eachUrl in self.fContent:
                pass
            else:
                self.responsePost = requests.post(self.urlPost, data=self.eachUrl, headers=self.HEADERS_POST)
                if '"success":1' in self.responsePost.content:
                    self.g.write(self.eachUrl + '\n')
                    print self.eachUrl + ' Done.'
        self.g.close()

    def run(self):
        self.getSitemap()
        self.sortList()
        self.postSitemap()

main.py

#-*- coding: utf-8 -*-

from PostBaiduSitemap import Pbs

urlSitemap = '' # Your sitemap url, like 'https://blog.kxrr.us/index.php/sitemap'
urlPost = '' # Your Baidu API, like 'https://data.zz.baidu.com/urls?site=blog.kxrr.us&token=xxxxxxxxxxxx'

if __name__ == '__main__':
    pbs = Pbs(urlSitemap,urlPost)
    pbs.run()

使用方法
在 main.py 中的

urlSitemap 填写你的Sitemap地址,形如 ‘https://blog.kxrr.us/index.php/sitemap’

urlPost 填写你的百度接口地址, 形如 ‘https://data.zz.baidu.com/urls?site=blog.kxrr.us&token=xxxxxxxxxxxx’

需要安装 requests 模块, pip install requests。

运行 python main.py。 可以在VPS中设置定时任务。

实现功能

主动推送,目前为分条推送。

一条URL推送成功后,将保存在 _urlPosted.txt 中,第二次运行将不再推送。

Leave a Comment