2017年2月21日 星期二 晴

看了网剧鬼吹灯,想起十年前看的小说,忍不住在手机上看了几部,发现还有几集没看过,便写了脚本抓成txt继续在手机上看。

不想用urllib、urllib2、cookielib之类的,这回第一次用了知道很久的requests,感觉还不错,以后尽量改用requests。

参考脚本如下:

[code] #! /usr/bin/env python #coding=utf-8

import requests import re

main_str = ‘(.*?)’ main_obj = re.compile(main_str)#,re.DOTALL | re.M)

artile_str = ‘

’ artile_obj = re.compile(artile_str,re.DOTALL | re.M)

content_str = ‘’’

(.*?)
’’’ content_obj = re.compile(content_str,re.DOTALL | re.M)

_re_html=re.compile(’<.?>|&.?;’, re.UNICODE|re.I|re.M|re.S) def textilize(s): return _re_html.sub("", s).strip()

#http://docs.python-requests.org/zh_CN/latest/index.html def main(): r = requests.get(‘http://www.guichuideng.org/',timeout=30) rsp = r.text.encode(‘utf-8’)#.encode(‘gb2312’) if rsp: #首页获取各部小说的url和小说名称 objs = main_obj.findall(rsp) for url,title in objs: result = [] r = requests.get(url,timeout=30) if r.text: #获取一部小说的各章节url objs2 = artile_obj.findall(r.text.encode(‘utf-8’)) for suburl,subtitle in objs2: print suburl r = requests.get(suburl,timeout=30) if r.text: #获取章节的内容和标题 objs = content_obj.findall(r.text.encode(‘utf-8’)) result.append(subtitle) result.append(’\n’) result.append(textilize(objs[0])) result.append(’\n\n’)

        with open('%s.txt' % (title.decode('utf-8')),'w') as f:
            f.write(''.join(result))

if name == “main”: main() [/code]