全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

python脚本爬取字体文件的实现方法

前言

大家应该都有所体会,为了提高验证码的识别准确率,我们当然要首先得到足够多的测试数据。验证码下载下来容易,但是需要人脑手工识别着实让人受不了,于是我就想了个折衷的办法——自己造验证码。

为了保证多样性,首先当然需要不同的字模了,直接用类似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漫画自动爬取脚本过程解析  # 验证码  # 有很多  # 递归  # 解压缩  # 的是  # 都是  # 我就  # 让人  # 下载地址  # 遍历  # 下了  # 这部  # 我不会  # 想了  # 跑了  # 这篇文章  # 谢谢大家  # 比较多  # 也比  # 连接到 


相关文章: 如何在Windows虚拟主机上快速搭建网站?  建站VPS配置与SEO优化指南:关键词排名提升策略  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  建站之星如何快速生成多端适配网站?  ppt制作免费网站有哪些,ppt模板免费下载网站?  实例解析angularjs的filter过滤器  如何快速完成中国万网建站详细流程?  手机网站制作与建设方案,手机网站如何建设?  官网网站制作腾讯审核要多久,联想路由器newifi官网  企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?  如何在云主机上快速搭建网站?  大学网站设计制作软件有哪些,如何将网站制作成自己app?  ,如何利用word制作宣传手册?  如何快速登录WAP自助建站平台?  如何挑选优质建站一级代理提升网站排名?  网站制作壁纸教程视频,电脑壁纸网站?  已有域名和空间如何快速搭建网站?  如何快速查询网址的建站时间与历史轨迹?  孙琪峥织梦建站教程如何优化数据库安全?  弹幕视频网站制作教程下载,弹幕视频网站是什么意思?  建站VPS选购需注意哪些关键参数?  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  如何在橙子建站上传落地页?操作指南详解  沈阳制作网站公司排名,沈阳装饰协会官方网站?  网站制作培训多少钱一个月,网站优化seo培训课程有哪些?  建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南  北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?  制作表格网站有哪些,线上表格怎么弄?  建站之星后台密码遗忘或太弱?如何重置与强化?  如何在西部数码注册域名并快速搭建网站?  南阳网站制作公司推荐,小学电子版试卷去哪里找资源好?  如何在阿里云完成域名注册与建站?  如何快速选择适合个人网站的云服务器配置?  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?  高防服务器租用指南:配置选择与快速部署攻略  C++如何使用std::optional?(处理可选值)  如何通过二级域名建站提升品牌影响力?  兔展官网 在线制作,怎样制作微信请帖?  岳西云建站教程与模板下载_一站式快速建站系统操作指南  简易网站制作视频教程,使用记事本编写一个简单的网页html文件?  宿州网站制作公司兴策,安徽省低保查询网站?  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  建站之星代理如何获取技术支持?  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  c# 在高并发场景下,委托和接口调用的性能对比  如何自定义建站之星网站的导航菜单样式?  中山网站制作网页,中山新生登记系统登记流程?  ,怎么在广州志愿者网站注册? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。