编辑需要实时将域名URL推送到百度接口,提高网站页面收录率,并对结果进行统计分析。
之前写了bash脚本实现推送功能,现在使用python实现页面推送和结果展现, 结果分析功能
还没有实现.


以下就是post数据到百度接口的返回结果,证明数据是没有问题.

wKiom1WLzNjQfWixAAEcezm1av0877.jpg


以下为python 实现推送的关键函数, 这在网上搜不到,回报一下网络.

#需要对网站CMS链接实时推送到百度站长平台,实现自动提交主动推送功能.
#filecontent为推送内容,一个URL字段为一行
#domain 为域名 这两个参数都会直接传入到baidu接口
#网上curl ruby php方法,以下自己写的python实现
#不能使用urllib.urlencode封装数据,再使用urllib2.Request组装请求
#必须使用httplib对象去封装请求,body内容为  
def postBaiDu(filecontent, domain):
        URL = "/urls?site=%s&token=%s" % (domain,othertoken)
        send_headers = {'Content-Type' : 'text/plain'}
        conn = httplib.HTTPConnection(baiduurl)
        #req = urllib2.Request(URL, data=data, headers=send_headers)
        conn.request(method="POST", url=URL, body=filecontent, headers=send_headers)
        response = conn.getresponse()
        baiduresult = response.read()
        conn.close()
        return baiduresult


原理内容

http://www.cnblogs.com/sysu-blackbear/p/3629420.html

http://www.cnblogs.com/wly923/archive/2013/05/07/3057122.html

数据来源: http://www.hacksparrow.com/python-difference-between-urllib-and-urllib2.html

Python的urllib和urllib2模块都做与请求URL相关的操作,但他们提供不同的功能。他们两个最显着的差异如下:

       urllib2可以接受一个Request对象,并以此可以来设置一个URL的headers,但是urllib只接收一个URL。这意味着,你不能伪装你的用户代理字符串等。urllib模块可以提供进行urlencode的方法,该方法用于GET查询字符串的生成,urllib2的不具有这样的功能。这就是urllib与urllib2经常在一起使用的原因

urllib2 can accept a Request object to set the headers for a URL request, urllib accepts only a URL. That means, you cannot masquerade your User Agent string etc.

urllib provides the urlencode method which is used for the generation of GET query strings, urllib2 doesn't have such a function. This is one of the reasons why urllib is often used along with urllib2.

      urllib 模块提供urlencode方法,可以键值对内容进行封装处理, post请求内容. 而urlib2则没有此方法.  如果需要post字段串, 则需要使用httplib方法. 

     urllib.urlopen 操作对象仅为url地址,而urlib2.urlopen操作对象可以是一个Request对象,参数可以为URL地址,键值对post数据, header关字段.

      httplib 则为原始请求链接, 经常链接申请, 请求内容(类似urllib2.urlopen功能, postdata数据可以为非键值对内容),链接断开.