手机
当前位置:查字典教程网 >脚本专栏 >python >Python实现的飞速中文网小说下载脚本
Python实现的飞速中文网小说下载脚本
摘要:1.JavaScript加密什么的最讨厌了:-(1).eval一个不依赖外部变量的函数立即调用很天真,看我nodejs来干掉你!2).HTT...

1.JavaScript 加密什么的最讨厌了 :-(

1).eval 一个不依赖外部变量的函数立即调用很天真,看我 nodejs 来干掉你!

2).HTTP 请求的验证首先尝试 Referer,「小甜饼」没有想像中的那么重要。

3).curl 和各命令行工具处理起文本很顺手呢

4).但是 Python 也没多几行呢

2.Requests 效率比 lxml 自己那个好太多

3.progressbar 太先进了,我还是自个儿写吧……

4.argparse 写 Python 命令行程序必备啊~

5.string.Template也很好用哦

6.以下是主代码啦,除了标准库以及 lxml 和 requests,没有的模块都在无所不能的 winterpy 仓库里。其实主代码也在的。

#!/usr/bin/env python3 # vim:fileencoding=utf-8 import sys from functools import partial from string import Template import argparse import base64 from urllib.parse import unquote from lxml.html import fromstring import requests from htmlutils import extractText from termutils import foreach session = requests.Session() def main(index, filename='$name-$author.txt', start=0): r = session.get(index) r.encoding = 'gb18030' doc = fromstring(r.text, base_url=index) doc.make_links_absolute() name = doc.xpath('//div[@class="info"]/p[1]/a/text()')[0] author = doc.xpath('//div[@class="info"]/p[1]/span/text()')[0].split()[-1] nametmpl = Template(filename) fname = nametmpl.substitute(name=name, author=author) with open(fname, 'w') as f: sys.stderr.write('下载到文件 %s。n' % fname) links = doc.xpath('//div[@class="chapterlist"]/ul/li/a') try: foreach(links, partial(gather_content, f.write), start=start) except KeyboardInterrupt: sys.stderr.write('n') sys.exit(130) sys.stderr.write('n') return True def gather_content(write, i, l): # curl -XPOST -F bookid=2747 -F chapterid=2098547 'http://www.feisuzw.com/skin/hongxiu/include/fe1sushow.php' # --referer http://www.feisuzw.com/Html/2747/2098547.html # tail +4 # base64 -d # sed 's/&#&/u/g' # ascii2uni -qaF # ascii2uni -qaJ # <p> paragraphs url = l.get('href') _, _, _, _, bookid, chapterid = url.split('/') chapterid = chapterid.split('.', 1)[0] r = session.post('http://www.feisuzw.com/skin/hongxiu/include/fe1sushow.php', data={ 'bookid': bookid, 'chapterid': chapterid, }, headers={'Referer': url}) text = r.content[3:] # strip BOM text = base64.decodebytes(text).replace(b'&#&', br'u') text = text.decode('unicode_escape') text = unquote(text) text = text.replace('<p>', '').replace('</p>', 'nn') title = l.text write(title) write('nn') write(text) write('n') return title if __name__ == '__main__': parser = argparse.ArgumentParser(description='下载飞速中文网小说') parser.add_argument('url', help='小说首页链接') parser.add_argument('name', default='$name-$author.txt', nargs='?', help='保存文件名模板(支持 $name 和 $author') parser.add_argument('-s', '--start', default=1, type=int, metavar='N', help='下载起始页位置(以 1 开始)') args = parser.parse_args() main(args.url, args.name, args.start-1)

【Python实现的飞速中文网小说下载脚本】相关文章:

python实现的登陆Discuz!论坛通用代码分享

python实现倒计时的示例

Python代码的打包与发布详解

Python3实现的腾讯微博自动发帖小工具

python实现数通设备tftp备份配置文件示例

python实现sublime3的less编译插件示例

Python实现的生成自我描述脚本分享(很有意思的程序)

Python实现的几个常用排序算法实例

Python实现全局变量的两个解决方法

Python实现的百度站长自动URL提交小工具

精品推荐
分类导航