前言

大家应该都有所体会,为了提高验证码的识别准确率,我们当然要首先得到足够多的测试数据。验证码下载下来容易,但是需要人脑手工识别着实让人受不了,于是我就想了个折衷的办法——自己造验证码。
为了保证多样性,首先当然需要不同的字模了,直接用类似ttf格式的字体文件即可,网上有很多ttf格式的字体包供我们下载。当然,我不会傻到手动下载解压缩,果断要写个爬虫了。
实现方法
网站一:fontsquirrel.com
这个网站的字体可以免费下载,但是有很多下载点都是外链连接到其他网站的,这部分得忽略掉。
#coding:utf-8
import urllib2,cookielib,sys,re,os,zipfile
import numpy as np
#网站登陆
cj=cookielib.CookieJar()
opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
opener.addheaders=[('User-agent','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36))')]
urllib2.install_opener(opener)
#搜索可下载连接
def search(path):
request=urllib2.Request(path)
response=urllib2.urlopen(request)
html=response.read()
html=html.replace('\n',' ')#将所有的回车去掉,因为正则表达式是单行匹配。。。。。。
urls=re.findall(r'<a href="(.*?)" rel="external nofollow" >(.*?)</a>',html)
for i in urls:
url,inner=i
if not re.findall(r'Download ',inner)==[] and re.findall(r'offsite',inner)==[] and url not in items:
items.append(url)
items=[]#保存下载地址
for i in xrange(15):
host='http://www.fontsquirrel.com/fonts/list/find_fonts/'+str(i*50)+'?filter%5Bdownload%5D=local'
search(host)
if not os.path.exists('ttf'):
os.mkdir('ttf')
os.chdir('ttf')
def unzip(rawfile,outputdir):
if zipfile.is_zipfile(rawfile):
print 'yes'
fz=zipfile.ZipFile(rawfile,'r')
for files in fz.namelist():
print(files) #打印zip归档中目录
fz.extract(files,outputdir)#解压缩文件
else:
print 'no'
for i in items:
print i
request=urllib2.Request('http://www.fontsquirrel.com'+i)
response=urllib2.urlopen(request)
html=response.read()
name=i.split('/')[-1]+'.zip'
f=open(name,'w')
f.write(html)
f.close()#文件记得关闭,否则下面unzip会出错
unzip(name,'./')
os.remove(name)
os.listdir(os.getcwd())
os.chdir('../')
files=os.listdir('ttf/')
for i in files:#删除无用文件
if not (i.split('.')[-1]=='ttf' or i.split('.')[-1]=='otf'):
if os.path.isdir(i):
os.removedirs('ttf/'+i)
else:
os.remove('ttf/'+i)
print len(os.listdir('ttf/'))
搞到了2000+个字体,种类也挺多的,蛮好。
网站二:dafont.com
这个网站的字体花样比较多,下载起来也比较方便,恶心的是他的文件名的编码好像有点问题。
#coding:utf-8
import urllib2,cookielib,sys,re,os,zipfile
import shutil
import numpy as np
cj=cookielib.CookieJar()
opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
opener.addheaders=[('User-agent','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36))')]
urllib2.install_opener(opener)
items=[]
def search(path):
request=urllib2.Request(path)
response=urllib2.urlopen(request)
html=response.read()
html=html.replace('\n',' ')
urls=re.findall(r'href=\"(http://dl.dafont.com/dl/\?f=.*?)\" >',html)
items.extend(urls)
for i in xrange(117):
host='http://www.dafont.com/new.php?page='+str(i+1)
search(host)
print 'Page'+str(i+1)+'done'
items=list(set(items))
print len(items)
if not os.path.exists('ttf2'):
os.mkdir('ttf2')
os.chdir('ttf2')
def unzip(rawfile,outputdir):
if zipfile.is_zipfile(rawfile):
print 'yes'
fz=zipfile.ZipFile(rawfile,'r')
for files in fz.namelist():
print(files) #打印zip归档中目录
fz.extract(files,outputdir)
else:
print 'no'
for i in items:
print i
request=urllib2.Request(i)
response=urllib2.urlopen(request)
html=response.read()
name=i.split('=')[-1]+'.zip'
f=open(name,'w')
f.write(html)
f.close()
unzip(name,'./')
os.remove(name)
print os.listdir(os.getcwd())
for root ,dire,fis in os.walk('./'):#递归遍历文件夹
for i in fis:
if not (i.split('.')[-1]=='ttf' or i.split('.')[-1]=='otf'):
os.remove(root+i)
print i
for i in os.listdir('./'):
if os.path.isdir(i):
os.rmdir(i)
os.chdir('../')
总体操作跟之前的差不多,跑了几十分钟下了4000多的字体。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家学习或者使用python能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
# python
# 爬取整个网站
# 爬取网页数据
# python爬取网站
# 编写Python爬虫抓取暴走漫画上gif图片的实例分享
# python实现爬虫下载漫画示例
# Linux部署python爬虫脚本
# 并设置定时任务的方法
# Python爬虫使用脚本登录Github并查看信息
# python爬虫_实现校园网自动重连脚本的教程
# python编写网页爬虫脚本并实现APScheduler调度
# 基于Python实现ComicReaper漫画自动爬取脚本过程解析
# 验证码
# 有很多
# 递归
# 解压缩
# 的是
# 都是
# 我就
# 让人
# 下载地址
# 遍历
# 下了
# 这部
# 我不会
# 想了
# 跑了
# 这篇文章
# 谢谢大家
# 比较多
# 也比
# 连接到
相关文章:
建站VPS能否同时实现高效与安全翻墙?
怎么用手机制作网站链接,dw怎么把手机适应页面变成网页?
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
企业宣传片制作网站有哪些,传媒公司怎么找企业宣传片项目?
如何在VPS电脑上快速搭建网站?
装修招标网站设计制作流程,装修招标流程?
安徽网站建设与外贸建站服务专业定制方案
香港服务器建站指南:免备案优势与SEO优化技巧全解析
利用JavaScript实现拖拽改变元素大小
Swift开发中switch语句值绑定模式
宁波自助建站系统如何快速打造专业企业网站?
Python如何创建带属性的XML节点
西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?
自助网站制作软件,个人如何自助建网站?
如何快速搭建高效简练网站?
深圳 网站制作,深圳招聘网站哪个比较好一点啊?
如何选择长沙网站建站模板?H5响应式与品牌定制哪个更优?
网站制作的方法有哪些,如何将自己制作的网站发布到网上?
如何用PHP快速搭建CMS系统?
在线流程图制作网站手机版,谁能推荐几个好的CG原画资源网站么?
攀枝花网站建设,攀枝花营业执照网上怎么年审?
如何在云主机上快速搭建网站?
建站之星2.7模板:企业网站建设与h5定制设计专题
C++如何将C风格字符串(char*)转换为std::string?(代码示例)
电商平台网站制作流程,电商网站如何制作?
青岛网站建设如何选择本地服务器?
网站微信制作软件,如何制作微信链接?
如何快速查询域名建站关键信息?
如何在IIS中配置站点IP、端口及主机头?
音响网站制作视频教程,隆霸音响官方网站?
如何通过西部建站助手安装IIS服务器?
广东企业建站网站优化与SEO营销核心策略指南
广东专业制作网站有哪些,广东省能源集团有限公司官网?
可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?
如何选择高效响应式自助建站源码系统?
css网站制作参考文献有哪些,易聊怎么注册?
建站之星如何配置系统实现高效建站?
如何通过主机屋免费建站教程十分钟搭建网站?
Android使用GridView实现日历的简单功能
惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?
python的本地网站制作,如何创建本地站点?
建站之星好吗?新手能否轻松上手建站?
如何通过商城自助建站源码实现零基础高效建站?
如何在阿里云香港服务器快速搭建网站?
制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?
子杰智能建站系统|零代码开发与AI生成SEO优化指南
香港服务器网站生成指南:免费资源整合与高速稳定配置方案
网站制作软件有哪些,制图软件有哪些?
全景视频制作网站有哪些,全景图怎么做成网页?
建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析
*请认真填写需求信息,我们会在24小时内与您取得联系。