百度收录自动化提交脚本 - python

前言
百度新提供了一个快速收录功能,试了一下收录概率挺高的,大概是每日提交十个链接会有五个左右收录,这可比原来的普通收录要快多了。于是决定不能浪费每天的名额,然而每天手动提交太麻烦,就写了个自动提交的脚本。这个脚本可以放在本地每日开机启动或者放在服务器上每日定时执行。
脚本代码

#-*- coding: utf-8 -*-
import os
import requests
import reclass UrlAutoPost(object):def __init__(self, urlSiteMap, urlPost, maxiumPost = 10, recordFilePath = '_urlPosted.txt'):'''Params:urlSiteMap: 站点地图的urlurlPost: 百度链接提交url接口maxiumPost: 每日允许的提交上限(百度快速收录有这样的限制)recordFilePath: 记录已经提交过的url的文件路径'''self.urlSiteMap = urlSiteMapself.urlPost = urlPostself.HEADERS_POST = {"User-Agent": "curl/7.12.1","Host": "data.zz.baidu.com","Content-Type": "text/plain","Content-Length": "83"}# 每日允许提交的url限额self.maxiumPost = maxiumPost# 记录之前已经发送过的url的文件路径self.recordFilePath = recordFilePathdef getPostUrls(self):'''Return: 之前已经发送过的url集合'''postedUrls = set()if(os.path.exists(os.path.join(os.getcwd(), self.recordFilePath))):with open(self.recordFilePath, 'r') as recordFile:for line in recordFile.readlines():line = line.replace('\n', '')postedUrls.add(line)postedUrls = postedUrlsreturn postedUrlsdef getSiteMapUrls(self):'''Return: 站点地图中所有的url所构成的集合'''responseSiteMap = requests.get(self.urlSiteMap)# 正则匹配所有<loc>和</loc>之间的字符串pattern = re.compile(r'<loc>(.*?)</loc>')siteMapUrls = set(pattern.findall(responseSiteMap.content.decode('utf-8')))return siteMapUrlsdef writePostedUrls(self, postedUrls):'''向记录文件中写入已经发送过的url,如果全部发送过则清空文件重新写入Params: postedUrls 已经发送过的url列表'''with open(self.recordFilePath, 'w' if len(postedUrls)<self.maxiumPost else 'a+') as recordFile:for line in postedUrls:recordFile.writelines(line+'\n')def post(self):'''post一定限额的urlReturn: post返回的信息'''# 所有需要提交的urlallPostUrls = self.getSiteMapUrls() - self.getPostUrls()# 由于限额限制实际提交的urlrealPostUrls = [allPostUrls.pop() for i in range(min(self.maxiumPost, len(allPostUrls)))]# 如果有待发送的url数量小于限额,为了充分利用所有限额,并且考虑到每天提交的url不会完全收录,所以剩下的限额用于全部siteMap# 的url重新发送,实际上就是把发送逻辑整体上看为一个循环队列。additionUrls = []if len(realPostUrls) < self.maxiumPost:allPostUrls = self.getSiteMapUrls() - set(realPostUrls)additionUrls = [allPostUrls.pop() for i in range(self.maxiumPost-len(realPostUrls))]self.writePostedUrls(additionUrls)else:self.writePostedUrls(realPostUrls)realPostUrls += additionUrls# 发送post请求,得到推送结果提示信息info = requests.post(self.urlPost, data='\n'.join(realPostUrls), headers=self.HEADERS_POST)# 根据返回的状态码确定提示信息if info.text.find('error') != -1:statusCode = info.text[info.text.find('error')+len("error':"):info.text.find('error')+len("error':")+3]if statusCode == '400':return "No submissions need to be updated or site error or over quota"elif statusCode == '401':return "Token is not valid"elif statusCode == '404':return "Api is not found"elif statusCode == '500':return "Internet error"else:return "unknow error"else:return info.textif __name__ == "__main__":urlAutoPost = UrlAutoPost('https://cstlife.com/sitemap.xml', 'http://data.zz.baidu.com/urls?site=https://cstlife.com/&token=fc3Ggj5gjDvjkai4&type=daily')print(urlAutoPost.post())

错误总结
request.post()函数中data参数接收一个字符串,直接传入列表是不可以的。这个函数返回的也是一个字符串,而对于这个字符串实际上它的内容是一个字典,只是用字符串包起来了,所以没法直接当成字典用。
打开文件时一定要注意读取方式,是否会清空文件,读取或写入的位置在开头还是在末尾。
要注意按行读取文件时,每一行行末都有一个’\n’,python并没有自动把它去除掉。

百度收录自动化提交脚本 - python相关推荐

  1. 自动提交脚本python_百度收录自动化提交脚本 - python

    前言 百度新提供了一个快速收录功能,试了一下收录概率挺高的,大概是每日提交十个链接会有五个左右收录,这可比原来的普通收录要快多了.于是决定不能浪费每天的名额,然而每天手动提交太麻烦,就写了个自动提交的 ...

  2. destoon7.0 百度收录自动提交教程

    destoon7.0 百度收录自动提交教程 首先第一步在api/cron目录下新建一个xzh.inc.php,代码如下 <?php defined('IN_DESTOON') or exit(' ...

  3. dedecms织梦程序百度收录自动提交教程

    前面介绍了destoon7.0 百度收录自动提交的方法,今天一起来看看dedecms怎么做百度收录自动提交! 第一步:在\plus\task目录下新建一个php文件,命名为xzh.php代码如下: r ...

  4. MySQL自动化安装脚本-python版

    MySQL 自动化安装脚本 脚本介绍 用python写的一个自动化安装mysql单机实例的脚本 适用于mysql5.7版本 MySQL安装包路径: /usr/local/mysql #需要把mysql ...

  5. 一键seo提交收录_Api提交百度搜索进行文章收录-网站SEO

    网站内容如果想被搜索引擎(百度/google)收录,除了提供robots.txt等着爬虫来爬以外,如果想最快的被百度收录可以在熊掌号平台进行注册,可以通过在平台上进行页面改造.站点同步等方式提高百度收 ...

  6. 提高百度收录:如何使用API提交之PHP推送功能(实操)

    百度收录资源提交主要有3种方式: API推送:最为快速的提交方式,建议您将站点当天新产出链接立即通过此方式推送给百度,以保证新链接可以及时被百度收录. Sitemap:您可以定期将网站链接放到Site ...

  7. 百度收录量、索引量、Site值等问题小结

    1.收录量.索引量.Site值 很多人分不清以上三者的关系,我整理了一张图: 先有收录,它是百度蜘蛛在用户网站搜索到的页面,收录量是所有收录的页面的数量. 索引是在收录的基础上,经过一定的优化算法变成 ...

  8. resttemplate post提交json_SEO工具脚本,Python百度普通收录API提交工具

    百度收录问题一直是不少渣渣头痛的问题,而官方其实提供了普通收录和快速收录这样的接口,直接调用官方api接口,大力出奇迹,你需要相信,你尽管seo,有排名算我输,不收录,怎么会呢,不是给你留了一个首页网 ...

  9. 根据sitemap一键推送给百度收录的python小脚本

    欢迎关注原创视频教程 Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.c ...

  10. Python 自动推送百度收录脚本

    Python 自动推送百度收录脚本 版权属于:瞌学家 所有,转载请注明出处 本文链接:https://www.songonline.top/archives/185/ 友情提示: 如果文章部分链接出现 ...

最新文章

  1. npm中package-lock.json的作用:npm install安装时使用
  2. UNIX文件mode t详解
  3. Ethernet IP TCP UDP 协议头部格式
  4. Android android-common 常用功能和工具集合
  5. 永磁无刷电机及其驱动技术_扫盲——直流无刷电机知识
  6. mysql自带加密解密字符集问题
  7. png文件合并_程序员学习之在Python中使用PDF:阅读、旋转、合并和拆分
  8. Mybatis根据IdType生成不同类型的主键id
  9. 教你写Linux设备驱动程序:一个简短的教程
  10. ES mapping 详解
  11. 计算机上面的ms mr,电脑上的计算器,Mod,MC,MR,MS,M+,M-分别表示什么意思啊...
  12. iOS 面试基础题目
  13. 穆穆推荐-软件销售行业软件公司销售参考操作手册--之1--公司软件产品的定位分类以及目标客户定位-待续....
  14. 利用 telnet 命令测试 SMTP 服务(QQ邮箱发邮件)
  15. Android开发中EventLog分析
  16. css单位vw vh,css3自适应布局单位vw,vh详解
  17. 用Python实现单词尾缀的分析及提取
  18. 关于 618的前世今生,我帮东哥告诉你
  19. 有道翻译的划词图标在adobe acrobat pro不显示
  20. 腾讯游戏开发工程师:Linux 机器 CPU 毛刺问题排查

热门文章

  1. DNA测序技术发展史:一代、二代、三代测序技术简要原理及比较
  2. R语言中dim函数_R语言在医学统计中的应用基础教程
  3. 计算机桌面右键点击 网络,电脑桌面右键单击鼠标一直转圈如何解决
  4. 联想用u盘重装系统步骤_联想电脑怎样用U盘重装系统?
  5. 斯坦福大学自然语言处理第四课 语言模型(Language Modeling)笔记
  6. 我的科幻评论——《星船伞兵》:海因莱茵最经典又最不典型之作,平凡人类勇气与责任的赞歌
  7. windows7系统如何连接远程桌面
  8. 清华大学四连冠,南科大获得最高性能奖!国际大学生超算竞赛SC21结果出炉
  9. 【黑灰产犯罪研究】流量劫持
  10. 天下第一铭:汤晓鸥教授自叙的故事