网站建好了,但是为了让更多的人能够看到自己的网址的文章,还需要利用搜索引擎,搜索引擎对网站的收录量决定了网站的展现量。国内主要的搜索入口还是百度一家独大,另外还分流了部分流量的是360搜索和搜狗搜索,本文就来介绍一下利用百度主动推送的API,批量推送网站链接到百度。
百度链接提交方式
百度的站长平台提供了几种链接提交的方式,站长可以通过这些方式来提交网站链接,方便百度更快的收录网站。
首先来从一张图来简单看一下百度的提交方式:
自动提交
自动提交分为三个不同的方式:
- 主动推送(实时):这种方式就是本文需要提及的推送链接的方式,调用百度提供的链接提交的API,批量推送链接,这种推送方式是百度推荐的,据说是最有效果的。
- 自动推送:自动推送是百度搜索资源平台为提高站点新增网页发现速度推出的工具,安装自动推送JS代码的网页,在页面被访问时,页面URL将立即被推送给百度。简单来说就是把百度提供的推送JS代码放到网站的每个网页中,然后只要有人浏览网页,就会自动把链接推送给百度进行收录。
- sitemap:这种方式就是把网站的sitemap地址提交给百度,百度会提取sitemap页面中的URL,然后进行收录,所以,建站的时候最好创建一个sitemap页面。
手动提交
手动提交其实也分为两种方式:
- 普通数据:手动将网站的链接输入到表单中,然后点击按钮提交给百度进行收录,每次可以提交20条链接,提交次数没有限制。
- 新站数据:新站保护数据推送通路可提交链接总额300条,每日最多提交10条。这个方式是给新站用的,每天提交的数量和总提交数量都是有限制的,新站建议使用这种方式先提交一遍网站链接。
使用主动推送(实时)
百度主动推送工具
这是本网站提供的百度主动推送工具在线使用版,工具的操作可以直接前往工具提交页面查看流程,这种方式主要是给网站有新的链接产生需要及时提交给百度的网址使用的。
Sitemap主动推送
这是本网站提供的 Sitemap主动推送在线使用版,这个工具的原理是首先利用爬虫技术提供网站sitemap页面中的所有链接,然后再利用百度的主动推送API接口去提交链接,比较适合新站快速大量提交链接,具体的使用方式可以直接前往工具页面查看。
主动推送Python代码
官方提供的推送参数
官方提供的POST提交方式的参数如下:
POST /urls?site=www.example.com&token=NpU0******** HTTP/1.1 User-Agent: curl/7.12.1 Host: data.zz.baidu.com Content-Type: text/plain Content-Length: 83
POST提交的data参数是一个字符串格式,也就是说,如果提取到了大量的URL链接,则需要使用\n
换行符把链接拼接成一个字符串然后提交。
源码展示
Python的代码如下:
import requests import re def push_urls(url, urls): '''根据百度站长提供的API推送链接''' headers = { 'User-Agent': 'curl/7.12.1', 'Host': 'data.zz.baidu.com', 'Content - Type': 'text / plain', 'Content - Length': '83' } try: html = requests.post(url, headers=headers, data=urls, timeout=5).text return html except: return "{'error':404,'message':'请求超时,接口地址错误!'}" def get_urls(url): '''提取网站sitemap中所有链接,参数必须是sitemap的链接''' try: html = requests.get(url,timeout=5).text except: return 'miss' else: urls = re.findall('<loc>(.*?)</loc>', html) return '\n'.join(urls)
代码解读
push_urls
函数是一个请求函数,也就是调用百度主动推送API的函数,这个函数接收2个参数,第1个参数是百度提供给每个网站的推送接口,这个需要自己去自己网站的百度站长平台中查找;第2个参数是链接组成的字符串,需要注意的是,如果连接很多,那么需要使用\n
也就是换行符把链接拼接成字符串。
html = requests.post(url, headers=headers, data=urls, timeout=5).text
上面这个就是Python的POST请求方式,传递的参数中url
是百度站长提供的网站的推送接口地址,headers
也就是上面提到的官方提供的请求头参数,data
就是由链接拼接成的字符串,timeout
是我设置的请求超时时间为5秒,因为考虑到提交的表单可能不符合网页请求的链接格式,避免报错。
get_urls
函数是一个提取链接的函数,这个函数的作用是提取网站的sitemap页面中的所有链接,利用的是正则表达式提取。需要传递的唯一的参数就是网站的sitemap的地址。
urls = re.findall('<loc>(.*?)</loc>', html)
上面这个就是用来提取sitemap中链接的正则表达式,因为规范的sitemap页面的格式都是固定的,所以正则表达式是通用的提取链接的方式。
一般的链接提交只需要调用push_urls
函数就够了,如果要提交sitemap的链接,就需要先调用get_urls
函数提取链接,然后把链接拼接成字符串传递到第一个函数进行提交。
总结:当然,百度站长工具官方也说明了,不论哪种提交链接的方式,都是一种增加自己的网址链接被收录的机会,这并不代表网址的链接一定会被收录。所以,老老实实先把网站的内容丰富起来,有了好的内容,相信搜索引擎一定会给到足够的展示机会给你的网站的。