python学习 + recipes

原创 2015年11月21日 15:36:38

python学习手册:http://man.chinaunix.net/develop/python/python2.3tut/tut/index.html
recipes手册:http://manual.calibre-ebook.com/news_recipe.html

渊源:购得kindle电子书一本,可以通过Calibre执行recipe脚本(python语言)扒网页手册、电子书等。
如:http://tieba.baidu.com/p/3002888534 http://blog.codinglabs.org/articles/convert-html-to-kindle-book.html

学习历程:

  1. 集成到eclipse
    参考:http://jingyan.baidu.com/article/cd4c2979101f02756f6e6064.html
  2. 首次运行:hello
    参考:http://jingyan.baidu.com/article/1876c8529e8de0890b1376a9.html
  3. 熟悉python学习手册2

注意点:

  • 代码块的封装靠“:+缩进”而不是“{}”;语句结尾“换行”而没有“;”
  • 变量为弱类型、无须申明;定义时需要初始化,所以像数组、map、对象就可以从命名空间外部增加与删除属性;
  • 打印语句为:print(”hello word !”);
  • 类型:字符串、数字、boolean【传值】,数组、map、方法、类【传址】都存在,建议过一遍“学习手册”;
  • 基本运算方式、表达式、控制语句照旧;数组遍历for-in;
  • 【方法】声明关键字:def,直接调用;内置属性:doc(文档字符串);方法是可以用变量存起来的,不像JAVA哈;方法参数是严谨完整的,不能缺可以有默认值;
  • 【类】声明关键字:class,实例化(x = MyClass())后才能使用;内置构造方法:init();类方法参数self:传递的是实例类本身;
  • 【类的命名空间】简单看成是一个文件,JAVA应该看成是文件夹,一般是首字母小写区别【类】的大写;所以【命名空间】的意思大致就是划分一块区域让他自己玩,我们再给他个称呼方便指代(深圳经济特区),方法、类、文件模块都可以看成命名空间啦,调用内部成员一般都会加上命名前缀;【作用域】主要在多个命名空间内部成员发生关联时才使用这个概念,由于他有层次包容与封装隔绝这一纵横两个方向的交融就看起来复杂了,一般不深究,用起来其实没概念上那么绕;

问题:

成果:

  1. 微信公众账号:http://mp.weixin.qq.com/wiki/home/index.html
# coding=gb2312
from calibre.web.feeds.recipes import BasicNewsRecipe
from calibre.ebooks.BeautifulSoup import Tag, NavigableString
from collections import OrderedDict

class weixin_mp(BasicNewsRecipe):

    title = u'微信 公众平台开发者文档'
    description = u'微信公众平台是运营者通过公众号为微信用户提供资讯和服务的平台,而公众平台开发接口则是提供服务的基础,开发者在公众平台网站中创建公众号、获取接口权限后,可以通过阅读本接口文档来帮助开发。'
    cover_url = 'http://mp.weixin.qq.com/wiki/static/assets/c9f483a9817ebc4c50a414800bda376b.jpg'

    url_prefix = 'http://mp.weixin.qq.com/wiki/'
    no_stylesheets = True
    keep_only_tags = [{ 'class': 'bodyContent' }]   #内容外部样式
    #remove_tags = [{ 'class': 'calibrenavbar'}]    
    def get_title(self, link):
        return link.contents[0].strip()

    def parse_index(self):
        return self.guide_parse_index()

    def guide_parse_index(self):

        soup = self.index_to_soup('http://mp.weixin.qq.com/wiki/home/index.html')#首页XML
        feeds = OrderedDict()
        result_set = soup.findAll('div', { 'class' : 'portal'})

        for item in result_set :

            section_title = self.tag_to_string(item.h5)
            feeds[section_title] = []
            articles = []

            for link in item.findAll('a'):  #章节A标签

                if "http" in link['href']:
                    continue

                title = self.get_title(link)
                title = title.encode("utf-8")
                url = self.url_prefix + link['href'][2:]#获取【章节内容】
                a = { 'title': title, 'url': url }
                articles.append(a)

            feeds[section_title] += articles

        ans = [(key, val) for key, val in feeds.iteritems()]

        return ans

epub下载:http://pan.baidu.com/s/1pJ7uobT【百度云】

iOS 7Development Recipes(中文版)之第二章 Storyboard(2)

2-1 实现一个导航控制器 在这个例子中,我们将创建一个展示公司基本信息的简单工程。它使用导航条来显示当前页面的题目。             在Xcode中,除了“空项目”模板,其他的模板都可以使用...

calibre recipes的API中文文档

class calibre.web.feeds.news.BasicNewsRecipe(options, log, progress_reporter)这个基类包含逻辑所需的所有功能。通过逐步覆盖更...

iOS 7Development Recipes(中文版)之第二章 Storyboard(1)

第二章Storyboard Recipes(1)   在开始移动开发时,我们会用笔和纸画出我们app的流程图。所以,就有了自从生成流程图的软件,用它你可以自动记录你的流程图和处理过程。现在,开发者的X...

温故知新: Groovy Recipes (上)

Groovy Recipes 是 2008 的老书了(没办法,貌似 Groovy 的基础读物之后就没有新的了),胜在够薄,拿来复习下 Groovy 的知识吧。...
  • hiarcs
  • hiarcs
  • 2011年03月31日 20:55
  • 3475

1000 Paleo Recipes

Start Cooking Amazing Paleo Recipes Today With The “Paleo Recipes” Collection! If You Want To ...

ASP.NET MVC 3 开发的20个秘诀(二十)[20 Recipes for Programming MVC 3]:缓存结果数据加速页面载入

http://www.cnblogs.com/o2ds/archive/2012/01/07/2315780.html   议题 随着网站的发展,大量用户访问流行内容和动态内容,这两个方面的因素...

Curator之recipes之Cache

http://curator.apache.org/curator-recipes/path-cache.html‘ 分为三种:Path Cache,Node Cache,Tree Cache ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:python学习 + recipes
举报原因:
原因补充:

(最多只允许输入30个字)