Python指令碼自動下載小說

來源:互聯網
上載者:User

標籤: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指令碼自動下載小說

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.