python實現(xiàn)爬蟲抓取小說功能示例【抓取金庸小說】
本文實例講述了python實現(xiàn)爬蟲抓取小說功能。分享給大家供大家參考,具體如下:
# -*- coding: utf-8 -*- from bs4 import BeautifulSoup from urllib import request import re import os,time #訪問url,返回html頁面 def get_html(url): req = request.Request(url) req.add_header('User-Agent','Mozilla/5.0') response = request.urlopen(url) html = response.read() return html #從列表頁獲取小說書名和鏈接 def get_books(url):#根據(jù)列表頁,返回此頁的{書名:鏈接}的字典 html = get_html(url) soup = BeautifulSoup(html,'lxml') fixed_html = soup.prettify() books = soup.find_all('div',attrs={'class':'bbox'}) book_dict = {} for book in books: book_name = book.h3.a.string book_url = book.h3.a.get('href') book_dict[book_name] = book_url return book_dict #根據(jù)書名鏈接,獲取具體的章節(jié){名稱:鏈接} 的字典 def get_parts(url): html = get_html(url) soup = BeautifulSoup(html,'lxml') fixed_html = soup.prettify() part_urls = soup.find_all('a') host = "http://www.xiaoshuotxt.org" part_dict = {} for p in part_urls: p_url = str(p.get('href')) if re.search(r'\d{5}.html',p_url) and ("xiaoshuotxt" not in p_url): part_dict[p.string] = host + p_url return part_dict #根據(jù)章節(jié)的url獲取具體的章節(jié)內(nèi)容 def get_txt(url): html = get_html(url) soup = BeautifulSoup(html,'lxml') fixed_html = soup.prettify() title = soup.h1.string #獲取文章標題 content = soup.find('div',attrs={'class':'zw'}) txt = BeautifulSoup.get_text(content) #正文內(nèi)容 return txt if __name__ == "__main__": root_dir= r'e:\books' #url = 'http://www.xiaoshuotxt.org/mingzhu/index_2.html' #第2頁的小說 url = "http://www.xiaoshuotxt.org/writer/58" #金庸的小說 books = get_books(url) for book_name,book_url in books.items(): os.mkdir(os.path.join(root_dir,book_name)) part_dict = get_parts(book_url) print(book_name,"共:",len(part_dict),"章節(jié)") for part_name,part_url in part_dict.items(): print("正在保存:",part_name) f1 = open(r'e:\books\%s\%s.txt'%(book_name,part_name),'w',encoding='utf-8')#以utf-8編碼創(chuàng)建文件 part_txt = get_txt(part_url) f1.write(str(part_txt)) f1.close() time.sleep(2)
運行效果:
更多關(guān)于Python相關(guān)內(nèi)容可查看本站專題:《Python Socket編程技巧總結(jié)》、《Python正則表達式用法總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對大家Python程序設(shè)計有所幫助。
相關(guān)文章
Python unittest 簡單實現(xiàn)參數(shù)化的方法
今天小編就為大家分享一篇Python unittest 簡單實現(xiàn)參數(shù)化的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-11-11Python實現(xiàn)識別手寫數(shù)字 Python圖片讀入與處理
這篇文章主要為大家詳細介紹了Python實現(xiàn)識別手寫數(shù)字,Python圖片的讀入與處理,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-01-01PyCharm 2021.2 (Professional)調(diào)試遠程服務(wù)器程序的操作技巧
本文給大家分享用 PyCharm 2021 調(diào)試遠程服務(wù)器程序的過程,通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧2021-08-08