辣鸡百度!!!
背景
自己创建的网站,需要被搜索引擎收录才能使得自己的文章可以被搜索到(即被搜索引擎爬虫抓取),但是百度的sitemap收录
实在是过于智障,因此换成API推送
。
收录方式比较
API推送:最为快速的提交方式,建议您将站点当天新产出链接立即通过此方式推送给百度,以保证新链接可以及时被百度收录。
sitemap:您可以定期将网站链接放到Sitemap中,然后将Sitemap提交给百度。百度会周期性的抓取检查您提交的Sitemap,对其中的链接进行处理,但收录速度慢于API推送。
手动提交:如果您不想通过程序提交,那么可以采用此种方式,手动将链接提交给百度。
自动推送:轻量级链接提交组件,将自动推送的JS代码放置在站点每一个页面源代码中,当页面被访问时,页面链接会自动推送给百度,有利于新页面更快被百度发现。
综上,选择使用Python编写自动提交的脚本来实现手动API推送。
开始
分析sitemap.xml
让我们打开我们站点的sitemap.xml
文件,观察
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| <?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <url> <loc>http://garfielder.com/post/990cc2cb.html</loc> <lastmod>2021-07-20</lastmod> </url> <url> <loc>http://garfielder.com/post/bad46b98.html</loc> <lastmod>2021-07-20</lastmod> </url> <url> <loc>http://garfielder.com/post/8dc94313.html</loc> <lastmod>2021-07-19</lastmod> </url> </urlset>
|
发现,我们文章的链接都被包裹在了<url>
标签中的<loc>
标签内,因此只要获取到这些链接然后推送即可,这里就需要用到Python的xml
模块和requests
模块。
Python代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| import requests import xml.dom.minidom
sitemap = 'sitemap.xml' site = 'yoursite' api = 'http://data.zz.baidu.com/urls?site=yoursite&token=xxxxxxxxxxx' res = []
dom = xml.dom.minidom.parse(sitemap) root = dom.documentElement urls = root.getElementsByTagName("url") for url in urls: loc = url.getElementsByTagName("loc") if loc[0].childNodes[0].data.split(site)[1].split("/")[1] == "post": res.append("//www.".join(loc[0].childNodes[0].data.split("//"))) response = requests.post(api, data="\n".join(res)) print(response.content.decode())
|
其中,site
换成你自己的网站,api
可以在百度站长处查看,sitemap.xml
必须是本地文件
运行代码,看到成功的状态即表示提交成功
1 2 3 4
| { remain: 2870, success: 61 }
|