1 #!/usr/bin/env python2 2 # vim:fileencoding=utf-8 3 from __future__ import unicode_literals, division, absolute_import, print_function 4 from calibre.web.feeds.news import BasicNewsRecipe 5 6 class AdvancedUserRecipePythonLibrary(BasicNewsRecipe):# 继承 BasicNewsRecipe 类的新类名 7 #/ 8 # 设置电子书元数据 9 #/ 10 title = 'Python 3.6.0 标准库' # 电子书名 11 description = """ 12 虽然 Python语言参考 描述了Python语言的确切语法和语义,但此库参考手册介绍了使用Python分发的标准库。它还描述了一些通常包含在Python发行版中的可选组件。 13 14 Python的标准库非常广泛,提供了广泛的设施,如下面长列表所示。该库包含内置的模块(用C编写),提供对系统功能的访问,例如文件I/O,否则Python程序员无法访问它,以及用Python编写的模块,为发生在日常编程。这些模块中的一些模块被明确地设计为通过将平台特定抽象为平台中立的API来鼓励和增强Python程序的可移植性。 15 16 用于Windows平台的Python安装程序通常包括整个标准库,并且通常还包括许多附加组件。对于类UNIX操作系统,Python通常作为包的集合提供,因此可能需要使用操作系统提供的包装工具来获取一些或所有可选组件。 17 18 除了标准库,还有来自 Python包索引 的数千个组件(从单个程序和模块到包以及整个应用程序开发框架)的不断增长的收集。 19 """ # 电子书简介 20 # cover_url = 'https://cdn.liaoxuefeng.com/cdn/files/attachments/001431608955727f25be118770e460fad1296261e01213d000/s' # 电子书封面 21 # masthead_url = '' # 页头图片 22 __author__ = 'RD 文档' # 作者 23 language = 'zh' # 语言 24 encoding = 'utf-8' # 编码 25 #/ 26 # 抓取页面内容设置 27 #/ 28 #keep_only_tags = [{ 'class': 'example' }] # 仅保留指定选择器包含的内容 29 no_stylesheets = True # 去除 CSS 样式 30 remove_javascript = True # 去除 JavaScript 脚本 31 # oldest_article = 7 32 max_articles_per_feed = 999 # 抓取文章数量 33 delay = 5 # 抓取资源间隔时间 34 auto_cleanup = True 35 """ 36 def get_browser(self): 37 br = BasicNewsRecipe.get_browser(self) 38 if self.username is not None and self.password is not None: 39 br.open('javascript:showSignin()') 40 br.select_form(name='login') 41 br['USERID'] = self.username 42 br['PASSWORD'] = self.password 43 br.submit() 44 return br 45 """ 46 #/ 47 # 页面内容解析方法 48 #/ 49 def parse_index(self): 50 site = 'https://www.rddoc.com/doc/Python/3.6.0/zh/library/' # 页面列表页 51 soup = self.index_to_soup(site) # 解析列表返回 BeautifulSoup 对象 52 links = soup.findAll('li', {'class': 'toctree-l1'}) # 获取所有文章的链接地址 53 articles = [] # 定义文章资源数组 54 for link in links: # 循环处理所有文章链接 55 link_text=link.next.next 56 title = link_text # 提取文章标题 57 each_link_attrs=link.contents[0] 58 url = site + each_link_attrs['href'] # 提取文章链接 59 a ={'title':title,'url':url} # 组合标题和链接 60 articles.append(a) # 累加到数组中 61 ans = [(self.title,articles)] # 组成最终的数据结构 62 return ans # 返回可供 Calibre 转换的数据结构