爬取吉他谱并生成pdf

来源:互联网 发布:网络红人欲猫儿 编辑:程序博客网 时间:2024/03/29 17:23

背景

初衷

作为一直曾经致力于做文艺青年的爬虫狗,偶尔还是想撸个吉他的,也买过三月通之类的书,但是上面的谱子要么太老,要么太难,所以一直以来都志利于在网上找谱,打印下来或者用kindle或ipad看,着实方便不少。

网站:爱乐谱

其中,爱乐谱是我比较喜欢的网站,界面相对简洁直观,并且谱子很清晰,关键都还很简单(在这里不我得不黑一下大伟老师的谱子,虽然好听但是相对复杂,对初学者太不友好)。对于我这样一个平时没有太多时间练习并只是想偶尔装装逼不求上进的初学者来说,再合适不过了。

缺点

爱乐谱虽好,但是吊丝还是不能满足的,原因有三:
1. 界面广告多影响体验,有弹窗(可以拦截)
2. 单独一张张手动保存太麻烦,关键每次还得重新命名,一般一个吉他谱还好几页,还需要编号,不然之后不好找。
3. 网站提供的“下载此乐谱”选项太坑爹,每次都要输入广告词(买吉他上约瑟网)才行,下载下来的也是纯数字编码的没有汉语名称,还得我手动添加,再复制到统一一个文件夹中,实在太不geek了

需求

  1. 用爬虫爬取该网站需要的谱子的对应网页的图片并保存
  2. 将gif格式的图片合成到同一个pdf中,并命名为该吉他谱的名称
  3. 删除原gif图片

实现

具体思路就不说了,直接写
- 环境:ubuntu,python2.7
- 爬虫需要第三方库:BeautifulSoup,urllib2, urllib,re(纯属为了熟练工具才用了这么多个。。。)
- 格式转换工具:reportlab(安装需要注册,貌似有别的更简单的工具,但是配套文档和参考资料少就没有用)

代码如下:

# -*- coding:utf-8 -*-from bs4 import BeautifulSoupimport urllib2, urllibimport refrom reportlab.pdfgen import canvasimport os#一些初始化i = 1url = 'http://www.yuesir.com/ipu/1504.html'#获取htmlrequest = urllib2.Request(url)response = urllib2.urlopen(request)html = response.read()#.decode('gbk')# 获取标题bs = BeautifulSoup(html)title=bs.find("h2").string.split(' ')[0]# 把后面难看的‘吉他谱’三个字去掉print title# 获取urlpattern = re.compile('<img class="page-post-main-content-list-item-img" src="(.*?)".*?')items = re.findall(pattern,html)#初始化pdfc = canvas.Canvas(title+".pdf")#下载图片并添加到pdf中并保存for item in items:    print item    # 写入图片    u = urllib.urlopen(item)    data = u.read()    name = title + str(i)    f = open(name, 'wb')    f.write(data)    f.close()    i = i+1    #写入pdf    dim=c.drawImage(name,0,0)    c.setPageSize(dim)    c.showPage()    #删除原gif    os.remove(name)c.save()

TODO

  1. 添加到命令行或网站,实现直接输入吉他谱名字即可选择合适的谱子直接爬取
  2. 添加下载或者发送到邮箱和kindle的功能
0 0
原创粉丝点击