Python 百度 SEO 工具脚本 | 百度普通收录 API 提交工具
目录
有兴趣的可以自行部署在服务器上,做成每日自动提交,或者 webhook 触发等。
百度提交页面:https://ziyuan.baidu.com/linksubmit/index
通过此页面可以向百度搜索主动推送资源,同时百度也提供了 API 提交接口,这样可以缩短爬虫发现网站链接的时间,但百度不保证收录和展现效果。
以本站为例,百度提供了 API 提交的样例参数。
源码
解析站点当前的 sitemap.xml 文件内容,向百度批量提交 url 。
使用前需要注意替换真实参数:
- site
- token
- sitemap_path
# -*- coding: UTF-8 -*-
import requests
import json
import re
class Pusher:
# 初始化参数
def __init__(self, site, token, sitemap_path):
self.site = site
self.token = token
self.sitemap_path = sitemap_path
# 批量提交 url
def post(self, urls):
post_url = f"http://data.zz.baidu.com/urls?site={self.site}&token={self.token}"
headers = {
'User-Agent': 'curl/7.12.1',
'Host': 'data.zz.baidu.com',
'Content-Type': 'text/plain',
'Content-Length': str(len(urls)),
}
response = requests.post(post_url, headers=headers, data=urls)
if response.status_code != 200:
print(f"推送失败(异常状态码):{response.status_code}")
print()
return None
response = response.text
response = json.loads(response)
if "error" in response:
print(f"推送失败(error)")
print(response)
print()
return None
if "success" not in response:
print(f"推送异常(百度已更改返回体格式)")
print(response)
print()
return None
print(f"已成功推送 {response['success']} 条 url")
print(f"当天剩余的可推送 url 条数 ---> {response['remain']}")
print()
return None
# 获取站点 sitemap.xml 文件内容, 解析 url
def get_url_from_sitemap(self):
url = f"{self.site}{self.sitemap_path}"
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36',
}
response = requests.get(url, headers=headers)
if response.status_code != 200:
print(f"获取站点 xml 文件失败(异常状态码):{response.status_code}")
print()
exit(0)
sitemap_xml = response.text
urls = re.findall(r'<loc>(.+?)</loc>', sitemap_xml, re.S)
if urls is None or urls == [] or urls == "":
print(f"解析 url 失败(该站点不存在 sitemap.xml 或内容为空)")
print()
exit(0)
print(f"获取站点 xml 文件成功, 共有:{len(urls)} 条 url")
print(urls)
print()
return urls
# 入口
def main(self):
urls = self.get_url_from_sitemap()
body = ""
for url in urls:
body += f"{url}\n"
self.post(body)
if __name__ == '__main__':
# 站点
site = "https://sugarless.top"
# 百度提交页面提供的 token
token = "JvNXvshHiebMYkve"
# 站点 sitemap uri
# sitemap_path = "/zh-cn/sitemap.xml"
sitemap_path = "/sitemap.xml"
pusher = Pusher(site, token, sitemap_path)
pusher.main()