Python 小把戏之下载小说
生活随笔
收集整理的這篇文章主要介紹了
Python 小把戏之下载小说
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Python 小把戲之下載小說
#! /usr/bin/python3 # -*- coding: utf-8 -*- from bs4 import BeautifulSoup import sys import requests import re ''' 下載小說 網站: 筆趣閣 http://www.biquku.la/ Parameter:無Returns:無 Modify:2019/01/28 ''' class book_downloader(object):def __init__(self, url):'''初始化函數 Parameter:url: 網站: 筆趣閣的 小說目錄頁網址Returns:無Modify:2019/01/28'''self.__target = urlself.__txtname= '' #存放小說名self.__names = [] #存放章節名字self.__urls = [] #存放章節鏈接self.__nums = 0 #章節數self.__book_url=[] #存放風推動小說urldef get_download_url(self):'''獲取各個章節的url 和 章節名稱Parameter:無Returns:無Modify:2019/01/28'''req = requests.get(url = self.__target) #發送get請求,獲取req對象 div_bf = BeautifulSoup(req.text) name = div_bf.find_all('div', id = 'info') #取出小說名稱name_fb = BeautifulSoup(str(name[0])) self.__txtname = name_fb.find_all('h1')[0].string #取出小說名 div = div_bf.find_all('div', id = 'list') #取出章節信息a_bf = BeautifulSoup(str(div[0])) a = a_bf.find_all('a') #剔除章節信息中無效部分self.__nums = len(a) #獲取章節數目for each in a:self.__names.append(each.string)self.__urls.append(self.__target + each.get('href'))def get_txt(self, url):'''獲取各個章節內容Parameter:各個章節的urlReturns:章節內容 txtModify:2019/01/28'''r = requests.get(url)r.encoding = 'utf-8'r_bf = BeautifulSoup(r.text)r_txt = r_bf.find_all('div', id = 'content') #獲取小說正文內容r_txt = r_txt[0].text.replace('\xa0'*4, '\n ') #替換換行return r_txtdef write_txt(self, name, txt):'''將小說章節和內容寫入本地Parameter:name: 章節名 txt 章節的內容Returns:無Modify:2019/01/28'''with open(str(self.__txtname) + '.txt', 'a', encoding = 'utf-8') as f:f.write('\n\n' + name + '\n\n')f.writelines(' ' + txt.replace('\xa0'*4, '\n '))def download(self):'''將小說章節和內容寫入本地Parameter:無Returns:無Modify:2019/01/28'''self.get_download_url() #獲取各個章節的url 和 章節名稱n = 0for i in self.__urls:sys.stdout.write(" %s 已下載:%.3f%%" % (self.__txtname,float( n*100/self.__nums)) + '\r')sys.stdout.flush()self.write_txt(self.__names[n], self.get_txt(i))n += 1def get_book_url(self):'''獲取 http://www.biquku.la/ 首頁上的封推的小說的urlParameter:無Returns:無Modify:2019/01/31'''url = 'http://www.biquku.la'html = requests.get(url = url) #發送get請求,獲取req對象 div_bf = BeautifulSoup(html.text) urls = div_bf.find_all('div', class_ = 'content') #取出小說名稱 和 urlprint(urls)for each in urls: #運用正則,取出小說urlself.__book_url += re.findall('<a href="(.*?)">', str(each))def download_books(self):'''下載 http://www.biquku.la/ 首頁上的封推的小說Parameter:無Returns:無Modify:2019/01/31'''self.get_book_url()for each in self.__book_url:self.__urls = [] #存放章節鏈接self.__names = [] #存放章節名字self.__target = each self.download()if __name__ == '__main__':target = 'http://www.biquku.la/18/18109/'dl = book_downloader(target) # dl.download() #下載target 指向的小說dl.download_books() #下載 http://www.biquku.la/ 首頁上的封推的小說總結
以上是生活随笔為你收集整理的Python 小把戏之下载小说的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python 小把戏之图片转字符串
- 下一篇: coremark 官网对各种单片机的测评