简单看看汤不热的网站

这里就不截图进行介绍了

每个tumblr的个人空间都是一个二级域名,你甚至可以绑定你自己的域名。

在个人主页上, 是一个微博式的消息列表,有文字,图片,视频等形式。消息的展现,是页面上的JavaScript脚本 通过请求Tumblr的Api来获取返回信息,然后添加到页面上的。通过API,可以省掉很多麻烦,至少不必分析整个页面的html来提取需要的信息了。

基础的url 是这样的:

http://{0}.tumblr.com/api/read?type{1}&num={2}&start={3}

第一个参数是要访问的用户空间的用户名;

第二个参数是媒体类型, 图片为“photo”,视频为“video”;

第三个参数为请求的资源数;

第四个参数为从第几个资源开始

返回的数据是XML格式的数据,基本的层级为Tumblr>posts>post。图片的URL在post的photo-url字段中,视频与此类似,就不再演示了。 获取到媒体资源的url之后,就可以进行下载了。

video类型的资源的url,需要从player属性中进行进一步匹配才能得出最后的结果。

技术的分析:

  • 发送http请求 使用requests模块
  • 返回的数据是xml xmltodic模块,将xml文档处理成类似Json对象,方便我们对数据进行访问。
  • 队列实现

    python中自带Queue模块,可以满足我们目前的队列需求,由于python2.7和python3.0中

    对queue模块的命名进行的变更,编程的时候需要注意。如果考虑兼容两个版本的话,可以 考虑引入

    six模块(https://pypi.python.org/pypi/six)。

    six模块是一个专门用于解决 从python2.x到python3.x的兼容性问题的模块,

    它对python版本变更导致到部分模块不能应用的问题 进行了内部处理,

    需要处理类似兼容问题的时候,可以考虑或者参考该模块的实现方式。

  • 多线程进行下载

  • 处理json

考虑到Tumblr需要FQ访问,如果本机不使用VPN的话,可能需要配置代理,代理采用json配置方式。 处理.使用python内置的json模块(https://docs.python.org/2/library/json.html)就可以了。

  • 使用正则

为了精确匹配url信息,我们需要使用正则表达式对xml数据的中字段值进行进一步处理,使用 内置的re模块(https://docs.python.org/2/library/re.html)就可以了。