Python实现的百度站长自动URL提交小工具

所属分类: 脚本专栏 / python 阅读数: 1784
收藏 0 赞 0 分享

URL提交是百度提供的一个站长工具,用于给站长提供手工收录某些URL的接口,但是该接口有验证码识别部分,比较难弄。所以编写了如下程序进行验证码自动识别:

主要思路

获取多个验证码,提交到 http://lab.ocrking.com/ 进行多次识别,然后计算每个验证码图片识别出来的 字母或数字 进行统计,得出统计率最高的 即为验证码。

复制代码 代码如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import requests
import time
import json
import re
 
 
if __name__ == "__main__":
    i = 1
    s = requests.session()
    s.headers.update({'Referer':'http://zhanzhang.baidu.com/sitesubmit/index','User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36'})
    r = s.get('http://zhanzhang.baidu.com/sitesubmit/index')
    s2 = requests.session()
    r = s.post('http://zhanzhang.baidu.com/captcha',data={'async':'false','n':time.time()})
    url = json.loads(r.content)['url']
    temp = []
    while 1:
        try:
            r = s.get(url)
            img_data = r.content
            r = s2.get('http://lab.ocrking.com/')
            try:
                content = ' '.join(r.content.split())
                sid =  re.findall(r'"sid" : "(.+?)"',content)[0]
                hash_1 = re.findall(r'"hash" : "(.+?)"',content)[0]
                timestamp = re.findall(r'"timestamp" : "(.+?)"',content)[0]
            except:
                print 'error on get orking info!'
                continue
            files = {'Filedata':('icode.jpeg', img_data)}
            data  = {'Filename':'icode.jpeg','sid':sid,'hash':hash_1,'timestamp':timestamp}
            r = s2.post('http://lab.ocrking.com/upload.html',files = files,data= data)
            r = s2.post('http://lab.ocrking.com/ocrking.html',data={'upfile':r.content,'type':'captcha','charset':'7'})
            icode = re.findall(r'<OcrResult>(.+?)</OcrResult>',r.content)[0]
            if len(icode) != 4 :
                continue
            temp.append(icode)
            i = i + 1
            if i == 3 :
                break
        except Exception,e:
            print e
            pass
 
    a = {'0':{},'1':{},'2':{},'3':{}}
    for aa in temp:
        i = 0
        while i <=3 :
            try:
                a[str(i)][aa[i]] =  a[str(i)][aa[i]] + 1
            except:
                a[str(i)][aa[i]] = 1
            i = i + 1
    icode = ['','','','']
    for index in a:
        temp_times = 0
        for index_1 in a[index]:
            if a[index][index_1] >= temp_times :
                temp_times = a[index][index_1]
                icode[int(index)] = index_1
 
    icode =  ''.join(icode)
 
    img_name = 'temp\\'+icode+'.png'
    file_object = open(img_name, 'w')
    file_object.write(img_data)
    file_object.close()
 
 
 
    #r = s.post('http://zhanzhang.baidu.com/sitesubmit/sitepost',data={'url':'http://lab.ocrking.com/','captcha':icode})
 
    #print r.content

更多精彩内容其他人还在看

pandas的qcut()方法详解

这篇文章主要介绍了pandas的qcut()方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

从列表或字典创建Pandas的DataFrame对象的方法

这篇文章主要介绍了从列表或字典创建Pandas的DataFrame对象的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

pandas.DataFrame的pivot()和unstack()实现行转列

这篇文章主要介绍了pandas.DataFrame的pivot()和unstack()实现行转列,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

pandas中的series数据类型详解

这篇文章主要介绍了pandas中的series数据类型详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

pandas 时间格式转换的实现

这篇文章主要介绍了pandas 时间格式转换的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

python中时间、日期、时间戳的转换的实现方法

这篇文章主要介绍了python中时间、日期、时间戳的转换的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

pandas进行时间数据的转换和计算时间差并提取年月日

这篇文章主要介绍了pandas进行时间数据的转换和计算时间差并提取年月日,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

详解将Pandas中的DataFrame类型转换成Numpy中array类型的三种方法

这篇文章主要介绍了详解将Pandas中的DataFrame类型转换成Numpy中array类型的三种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

python和c语言的主要区别总结

在本篇文章里小编给各位整理了关于python和c语言的主要区别的相关知识帖内容,有需要的朋友们学习阅读下。
收藏 0 赞 0 分享

选择Python写网络爬虫的优势和理由

在本篇文章里小编给各位整理了一篇关于选择Python写网络爬虫的优势和理由以及相关代码实例,有兴趣的朋友们阅读下吧。
收藏 0 赞 0 分享
查看更多