全网整合营销服务商

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

免费咨询热线: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漫画自动爬取脚本过程解析  # 验证码  # 有很多  # 递归  # 解压缩  # 的是  # 都是  # 我就  # 让人  # 下载地址  # 遍历  # 下了  # 这部  # 我不会  # 想了  # 跑了  # 这篇文章  # 谢谢大家  # 比较多  # 也比  # 连接到 


相关文章: 建站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小时内与您取得联系。