之前写过从 Teahour.FM 下载 podcast 的博客,最近有空听了其中一部分,觉得质量还不错。
另外,近期又发现了一个新的 podcast,叫「IT 公论」,主题是科技方面的。看了这个 podcast 的介绍页面,感觉应该不错,于是便打算下载下来。
由于上次写的代码里,下载部分的代码是完全可以复用的,所以整个过程还是相当顺利的。这次处理的重点在下载链接(.mp3 文件)的获取上,因为「IT 公论」的音频下载链接并不像 Teahour.FM 那么有规律,因此还需要用正则表达式来获取。
基本思路是:打开每期 podcast 的页面(如果是第 N 期,页面地址是 http://www.itgonglun.com/episodes/N),然后在页面的 HTML 代码用正则表达式匹配得到下载链接。
几点注意事项:
- 务必采用最通用的获取下载链接获取方式。
以第 48 期为例,一个非常明显的路径是直接下载节目这个按钮,对应的 HTML 代码是:
直接下载节目
看起来方法似乎非常明显、呼之欲出了。但是……不通用。因为并不是每一期都有直接下载节目这个按钮,比如第 1 期、第 3 期。
最通用的方法是最下方的在线收听的按钮。还是以第 48 期为例,对应 HTML 代码是:
data-url="http://traffic.libsyn.com/itgonglun/IT__ep48_-_VR_-_We_have_to_do_our_part_too_GM.mp3"
- 某些期 podcast 的下载 URL 不规范,写正则表达式时需要注意。
以第 23 期为例,对应 HTML 代码是:
data-url="http://traffic.libsyn.com/itgonglun/IT__ep23_-_The_Design_of_PRC_National_Emblem_GM.mp3 "
注意最后一个
"
前面多了一个空格符。这个似乎是笔误?
代码已经写好,放在 GitHUb 上面。项目名称返璞归真,就叫 itgonglun-crawler。