楚子沦i 发表于 2021-3-23 08:15

利用python向百度推送网站链接

本帖最后由 楚子沦i 于 2021-3-23 09:14 编辑

做网站的人一般都很关注网站的收录量,而收录量就需要蜘蛛去爬取,而爬取则需要去提交。
而百度提供了api提交的方法。

用python进行提交的话,我选择的是post提交。
POST /urls?site=“自己网站的token”         # 这里是site后面那一段带网站的,site=https://zjzdmc.top&token=xxxxxxxx,并非是整个接口调用地址。
User-Agent: curl/7.12.1
Host: data.zz.baidu.com
Content-Type: text/plain
Content-Length: 83

这个第一行的token请换成自己的。
http://www.example.com/1.html
http://www.example.com/2.html
这个是提交示例,也就是说一个一行。
{
    "remain":99998,
    "success":2,
    "not_same_site":[],
    "not_valid":[]
}
这个是返回信息,那么如何去写就一目了然了。


import requests
import re
import time
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36,',
    'Host': 'data.zz.baidu.com',
    'Content-Length':'83'
}
print("*"*30)
print('links.txt示例:\nhttps://xxxxx.html\nhttps://xxxxx.html\nhttps://xxxxx.html\nhttps://xxxxx.html')
print("*"*30)
print('api示例:\nhttp://data.zz.baidu.com/urls?site=xxxxxxxxxxx')
push_num = 1
while push_num < 9999:
    if push_num == 1:
      answer = input("请问你是否已经将链接填入links.txt,api填入api.txt中呢,如果是则回答1\n")
    if answer == '1':
      try:
            with open('links.txt', 'r') as links:
                links = links.read()
      except FileNotFoundError:
            print("links.txt文件不存在")
      try:
            with open('api.txt', 'r') as api:
                api = api.read()
      except FileNotFoundError:
            print("links.txt文件不存在")

      def thinklink(links, api):
            if links == '':
                print("links.txt文件为空")
            else:
                if api == '':
                  print('api.txt为空')
                else:
                  try:
                        html_result = requests.post(api, headers=headers, timeout=5, data=links).text
                        return html_result
                  except:
                        return print("失败")
      push_result = thinklink(links, api)
      print('提交完成:'+push_result)
      surplus_push_num = re.findall('"remain":(.*),"', push_result)
      surplus_push_num = surplus_push_num.pop()
      print('剩余' + surplus_push_num + '次提交机会')
    else:
      print("请将内容填充!5秒钟后自动关闭")
      time.sleep(5)
      break
    print('*'*30)
    new_answer = input("是否还需要提交,如果是的话请先去更改一下相应文件,如果是请输入1,如果否请输入0\n")
    if new_answer == '0':
      print("提交结束,5秒钟后自动关闭")
      time.sleep(5)
      break
    push_num += 1
    print("现在开始第"+str(push_num)+'次提交')




需要在python文件新建两个txt文件,分别放token和链接。
然后其实就可以直接双击打开python文件进行提交了。如果有什么疑问可以直接问。

楚子沦i 发表于 2021-3-23 09:15

sitiger 发表于 2021-3-23 08:55
seo?分享很赞,token格式没写好:
http://data.zz.baidu.com/urls?site=###&token=###

没得,就是我写的那个格式,不是用接口调用地址完整的提交的,只需要site后面的内容就可以了。

可以看一下推送示例中的post推送

龍龖龘 发表于 2021-3-23 11:12

楚子沦i 发表于 2021-3-23 10:12
你把所有要提交的链接放在links文件里,然后提交就可以了。一下就提交上去了。

接口最大提交数量是2000,当links的链接数量大于2000时候,报错。
如果可以控制单次提交链接最大数量为1999,然后对links的数据分割来提交会不会更有效率。

xj520juan 发表于 2021-3-23 08:24

:lol:victory:感谢分享,收藏先,待会试试看

龍謹 发表于 2021-3-23 08:24

沙发,PY小白前排围观支持一下。

游所为 发表于 2021-3-23 08:30

沙发,PY小白前排围观学习一下。

alexyui 发表于 2021-3-23 08:35

正好准备转SEO,收藏先,感谢大佬{:1_893:}

sic5s 发表于 2021-3-23 08:51

像大佬学习一下PY

sitiger 发表于 2021-3-23 08:55

seo?分享很赞,token格式没写好:
http://data.zz.baidu.com/urls?site=###&token=###

salome525 发表于 2021-3-23 09:13

大佬好厉害,也想成为像楼主这么棒的人,谢谢分享

net1 发表于 2021-3-23 09:25

收藏,以后能用到
页: [1] 2 3
查看完整版本: 利用python向百度推送网站链接