本文以爬取一部小說為例,因使用的是多線程爬取,所以每個小說章節都是一個txt文件,而這些文件都是亂序的,要閱讀的話我們也不可能每閱讀一章小說就去翻另一個txt文件,這時就需要合并了.
----------------------------------------
爬取時間2022/8/16
代碼如下:
代碼1-25行
代碼28-49行
代碼50-75行
運行結果:
pycharm中的結果
文件管理器中的結果
從結果中可以看到,程序從運行到結束,一共花了3秒鐘,
三秒内做完了從網站獲取url鍊接,再通過120個url下載了120個txt文件,合并成一個大的txt文件後,再删除之前的120個小txt文件.
----------------------------------------------
代碼10-25行>>>
從主頁面發起請求,結合bs4和正則獲取了小說每個章節的url鍊接和名字,并将順序正常的名字寫入叫1000.txt的文件. 第22行用unicodedatach處理了文本中的非正常空格(類似 )
代碼第28-39行>>>
以每個章節的url為函數參數,獲取了小說内容,并寫入txt文件,
用章節名 (例如: 第四十九回 琉璃世界白雪紅梅 脂粉香娃割腥啖) 作為xxt文件的名字. 因為原本的章節名含有空格以及非正常空格,不利于後續排序處理,就采用正則提取了 "第"和"回"中間的文字作為txt文件名.
不用正則處理xtxt文件名就是這個樣子
代碼第69-71行>>>
創建了線程池下載txt文件
代碼第41-55行>>>
打開名為1000.txt文件,提取裡面的正常順序的章節名,以此作為已下載的120個txt文件的合并順序.
代碼第57-61行>>>
将之前下載的120個小txt文件删除,保留合并後的大的txt文件,接下來就可以愉快地閱讀小說了
手機中顯示的效果
注: 将ts文件合并成MP4文件也是通用的,但需要注意的是使用os模塊單次合并ts文件數量在650個左右,不到700個.
至于用os模塊單次合并txt文件的數量限制是多少,暫時未測試.
----------------------------------------------
最後:源碼以及小說txt文件,封面原圖鍊接阿裡雲盤分享
,