欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python實(shí)現(xiàn)的飛速中文網(wǎng)小說下載腳本

 更新時間:2015年04月23日 09:18:20   作者:依云  
這篇文章主要介紹了Python實(shí)現(xiàn)的飛速中文網(wǎng)小說下載腳本,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下

1.JavaScript 加密什么的最討厭了 :-(

1).eval 一個不依賴外部變量的函數(shù)立即調(diào)用很天真,看我 nodejs 來干掉你!
2).HTTP 請求的驗(yàn)證首先嘗試 Referer,「小甜餅」沒有想像中的那么重要。
3).curl 和各命令行工具處理起文本很順手呢
4).但是 Python 也沒多幾行呢

2.Requests 效率比 lxml 自己那個好太多
3.progressbar 太先進(jìn)了,我還是自個兒寫吧……
4.argparse 寫 Python 命令行程序必備啊~
5.string.Template也很好用哦
6.以下是主代碼啦,除了標(biāo)準(zhǔn)庫以及 lxml 和 requests,沒有的模塊都在無所不能的 winterpy 倉庫里。其實(shí)主代碼也在的。

#!/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>', '\n\n')

 title = l.text
 write(title)
 write('\n\n')
 write(text)
 write('\n')
 return title

if __name__ == '__main__':
 parser = argparse.ArgumentParser(description='下載飛速中文網(wǎng)小說')
 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)

相關(guān)文章

  • Python中requests做接口測試的方法

    Python中requests做接口測試的方法

    Requests是一個很實(shí)用的Python HTTP客戶端庫,編寫爬蟲和測試服務(wù)器響應(yīng)數(shù)據(jù)時經(jīng)常會用到,本文主要介紹了Python中requests做接口測試的方法,感興趣的可以了解一下
    2021-05-05
  • Python多個MP4合成視頻的實(shí)現(xiàn)方法

    Python多個MP4合成視頻的實(shí)現(xiàn)方法

    最近接觸了個項(xiàng)目,需要把多個文件合成一個視頻,本文主要使用Python把多個MP4合成視頻,感興趣的可以了解一下
    2021-07-07
  • Python?Matplotlib?marker?標(biāo)記詳解

    Python?Matplotlib?marker?標(biāo)記詳解

    這篇文章主要介紹了Python?Matplotlib?marker?標(biāo)記詳解,Matplotlib,風(fēng)格類似?Matlab?的基于?Python?的圖表繪圖系統(tǒng),詳細(xì)內(nèi)容需要的小伙伴可以參考一下
    2022-07-07
  • python 獲取微信好友列表的方法(微信web)

    python 獲取微信好友列表的方法(微信web)

    今天小編就為大家分享一篇python 獲取微信好友列表的方法(微信web),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • Python的標(biāo)準(zhǔn)模塊包json詳解

    Python的標(biāo)準(zhǔn)模塊包json詳解

    這篇文章主要介紹了Python的標(biāo)準(zhǔn)模塊包json詳解的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • Python使用get_text()方法從大段html中提取文本的實(shí)例

    Python使用get_text()方法從大段html中提取文本的實(shí)例

    今天小編就為大家分享一篇Python使用get_text()方法從大段html中提取文本的實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Pandas?篩選和刪除目標(biāo)值所在的行的實(shí)現(xiàn)

    Pandas?篩選和刪除目標(biāo)值所在的行的實(shí)現(xiàn)

    本文主要介紹了Pandas篩選和刪除目標(biāo)值所在的行的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Django rest framework工具包簡單用法示例

    Django rest framework工具包簡單用法示例

    這篇文章主要介紹了Django rest framework工具包簡單用法,結(jié)合匿名訪問控制的具體實(shí)例分析了Django rest framework工具包的注冊、路由設(shè)置、視圖、權(quán)限控制、配置等相關(guān)操作技巧,需要的朋友可以參考下
    2018-07-07
  • Python3如何將源目錄中的圖片用MD5命名并可以設(shè)定目標(biāo)目錄

    Python3如何將源目錄中的圖片用MD5命名并可以設(shè)定目標(biāo)目錄

    這篇文章主要介紹了Python3如何將源目錄中的圖片用MD5命名并可以設(shè)定目標(biāo)目錄,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • python pptx復(fù)制指定頁的ppt教程

    python pptx復(fù)制指定頁的ppt教程

    今天小編就為大家分享一篇python pptx復(fù)制指定頁的ppt教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02

最新評論