標籤:python beautifulsoup 小說
本人喜歡在網上看小說,一直使用的是小說下載閱讀器,可以自動從網上下載想看的小說到本地,比較方便。最近在學習Python的爬蟲,受此啟發,突然就想到寫一個爬取小說內容的指令碼玩玩。於是,通過在逐浪上面分析原始碼,找出結構特點之後,寫了一個可以爬取逐浪上小說內容的指令碼。
具體實現功能如下:輸入小說目錄頁的url之後,指令碼會自動分析目錄頁,提取小說的章節名和章節連結地址。然後再從章節連結地址逐個提取章節內容。現階段只是將小說從第一章開始,每次提取一章內容,斷行符號之後提取下一章內容。其他網站的結果可能有不同,需要做一定修改。在逐浪測試過正常。
分享此代碼,一是做個記錄,方便自己以後回顧。二麼也想拋磚引玉,希望各路大神不吝賜教。
下面是我用來測試的頁面:http://book.zhulang.com/263736/
效果如下:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/6D/8D/wKioL1VmgJbzfHcNAARBWDxslYA371.jpg" title="1.jpg" alt="wKioL1VmgJbzfHcNAARBWDxslYA371.jpg" />
實現的原始碼如下,請各位指教:
#-*-coding:utf8-*-#!/usr/bin/python# Python: 2.7.8# Platform: Windows# Program: Get Novels From Internet# Author: wucl# Description: Get Novels# Version: 1.0# History: 2015.5.27 完成目錄和url提取# 2015.5.28 完成目錄中正則提取第*章,提取出章節連結並下載。在逐浪測試下載無誤。from bs4 import BeautifulSoupimport urllib2,redef get_menu(url): """Get chapter name and its url""" user_agent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:39.0) Gecko/20100101 Firefox/39.0" headers = {‘User-Agent‘:user_agent} req = urllib2.Request(url,headers = headers) page = urllib2.urlopen(req).read() soup = BeautifulSoup(page) novel = soup.find_all(‘title‘)[0].text.split(‘_‘)[0] # 提取小說名 menu = [] all_text = soup.find_all(‘a‘,target="_blank") # 提取記載有小說章節名和連結地址的模組 regex=re.compile(ur‘\u7b2c.+\u7ae0‘) # 中文正則匹配第..章,去除不必要的連結 for title in all_text: if re.findall(regex,title.text): name = title.text x = [name,title[‘href‘]] menu.append(x) # 把記載有小說章節名和連結地址的列表插入列表中 return menu,noveldef get_chapter(name,url): """Get every chapter in menu""" html=urllib2.urlopen(url).read() soup=BeautifulSoup(html) content=soup.find_all(‘p‘) # 提取小說本文 return content[0].text if __name__=="__main__": url=raw_input("""Input the main page‘s url of the novel in ZhuLang\n Then Press Enter to Continue\n""") if url: menu,title=get_menu(url) print title,str(len(menu))+‘\n Press Enter To Continue \n‘ # 輸出擷取到的小說名和章節數 for i in menu: chapter=get_chapter(i[0],i[1]) raw_input() print ‘\n‘+i[0]+‘\n‘ print chapter print ‘\n‘
本文出自 “載酒仗劍江湖行” 部落格,請務必保留此出處http://wucl202000.blog.51cto.com/4687508/1655858
Python指令碼自動下載小說