百度收集自动推送脚本——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/"]}
如失败,则返回具体失败原因:
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】博客园携手 AI 驱动开发工具商 Chat2DB 推出联合终身会员
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 对象分配(Alloc)底层原理浅谈
· 聊一聊 C#异步 任务延续的三种底层玩法
· 敏捷开发:如何高效开每日站会
· 为什么 .NET8线程池 容易引发线程饥饿
· golang自带的死锁检测并非银弹
· 一个适用于 .NET 的开源整洁架构项目模板
· API 风格选对了,文档写好了,项目就成功了一半!
· 【开源】C#上位机必备高效数据转换助手
· .NET 9.0 使用 Vulkan API 编写跨平台图形应用
· .NET 依赖注入中的 Captive Dependency
2018-06-23 侏罗纪世界
2018-06-23 新媒体