Crawler:利用Beautifulsoup库+find_all方法实现下载在线书架小说《星祖的电影世界》
生活随笔
收集整理的這篇文章主要介紹了
Crawler:利用Beautifulsoup库+find_all方法实现下载在线书架小说《星祖的电影世界》
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Crawler:利用Beautifulsoup庫+find_all方法實現下載在線書架小說《星祖的電影世界》
?
?
目錄
輸出結果
核心代碼
?
?
?
?
輸出結果
?
核心代碼
?
# -*- coding: utf-8 -*- ''' Created on 2018年4月7日@author: niu ''' #Py之Crawler:利用beautifulsoup+find_all方法實現下載在線書架小說《星祖的電影世界》 #find_all方法的第一個參數是獲取的標簽名,第二個參數class_是標簽的屬性。from bs4 import BeautifulSoup import requests, sysclass downloader(object):def __init__(self):self.server = 'http://www.biqukan.com/'self.target = 'http://www.biqukan.com/50_50927/'self.names = [] #存放章節名self.urls = [] #存放章節鏈接self.nums = 0 #章節數def get_download_url(self): #獲取下載鏈接req = requests.get(url = self.target)html = req.textdiv_bf = BeautifulSoup(html) #利用beautifulsoup提取內容div = div_bf.find_all('div', class_ = 'listmain') #通過審查元素發現全書各個章節存放在了class屬性為listmain的div標簽下,各章之間差別就在于這些章節的【href】屬性不一樣,而且其屬性正好對應著每一章節URL后半部分,那這樣,我們就可以根據標簽的href屬性值獲得每個章節的鏈接和名稱了。a_bf = BeautifulSoup(str(div[0]))a = a_bf.find_all('a') self.nums = len(a[14:]) #剔除不必要的章節,并統計章節數for each in a[14:]:self.names.append(each.string)self.urls.append(self.server + each.get('href')) #再接著提取章節名和章節文章def get_contents(self, target): #獲取章節內容,target下載連接(string),texts章節內容(string)req = requests.get(url = target)html = req.textbf = BeautifulSoup(html)texts = bf.find_all('div', class_ = 'showtxt') #觀察不同標簽發現class屬性為showtxt的div標簽只有一個!這個標簽里面存放的內容,是我們需要的小說正文texts = texts[0].text.replace('\xa0'*8,'\n\n') #replace方法,剔除空格,替換為回車進行分段。 在html中是用來表示空格的。replace(‘\xa0’*8,’\n\n’)就是去掉下圖的八個空格符號,并用回車代替return textsdef writer(self, name, path, text): #將爬取的文章內容寫入文件write_flag = Truewith open(path, 'a', encoding='utf-8') as f: #當前路徑下,小說保存名稱(string)f.write(name + '\n') #章節名稱(string)f.writelines(text) #章節內容(string)f.write('\n\n') if __name__ == "__main__":dl = downloader()dl.get_download_url()print('《星祖的電影世界》開始下載:')for i in range(dl.nums):dl.writer(dl.names[i], '星祖的電影世界.txt', dl.get_contents(dl.urls[i]))sys.stdout.write(" 已下載:%.3f%%" % float(i/dl.nums) + '\r')sys.stdout.flush()print('《星祖的電影世界》下載完成')?
?
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的Crawler:利用Beautifulsoup库+find_all方法实现下载在线书架小说《星祖的电影世界》的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BlockChain:Python一步一
- 下一篇: Py之demjson:Python库之d