最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python下載網(wǎng)絡(luò)小說實(shí)例代碼

 更新時(shí)間:2018年02月03日 14:53:11   作者:祥知道  
這篇文章主要介紹了Python下載網(wǎng)絡(luò)小說實(shí)例代碼,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下

看網(wǎng)絡(luò)小說一般會(huì)攢上一波,然后導(dǎo)入Kindle里面去看,但是攢的多了,機(jī)械的Ctrl+C和Ctrl+V實(shí)在是OUT,所以就出現(xiàn)了此文。

其實(shí)Python我也是小白,用它的目的主要是它強(qiáng)大文本處理能力和網(wǎng)絡(luò)支持,以及許多好用的庫(kù),不需要自己造輪子。而且真心比C方便?。ㄕ媸怯昧瞬胖溃?/p>

分析要獲取的網(wǎng)頁(yè)

我要獲取的主要是3個(gè)東西:

  • 文章的標(biāo)題。<div id="title">正文 第一章 北靈院</div>
  • 文章正文內(nèi)容。<div id="content" style="line-height: 150%; color: rgb(0, 0, 0);">
  • 下一章的URL。<a href="11455541.html" rel="external nofollow" >下一頁(yè)</a>

還有就是注意網(wǎng)頁(yè)的編碼,這個(gè)網(wǎng)頁(yè)的編碼是GBK,但在實(shí)際運(yùn)行過程中,我用GBK會(huì)出現(xiàn)網(wǎng)頁(yè)解碼錯(cuò)誤:

UnicodeDecodeError: ‘gbk' codec can't decode bytes in position 2-3: illegal multibyte sequence

所以換用了gb18030,問題就解決了,因?yàn)橐话阈尴删W(wǎng)絡(luò)小說中,會(huì)出現(xiàn)各種王霸之氣的文字,你們懂得,所以需要更加牛逼文字庫(kù),你們感受一下博大精深的字符編碼。

源代碼

我就知道,大家要這個(gè),哈哈哈。

主函數(shù)

#主函數(shù)
if __name__ == '__main__':
  global numChapter
  global NOVERL

  NOVERL = '大主宰.txt'
  #NOVERL = '擇天記.txt'
  NOVERL = '武動(dòng)乾坤.txt'


  if(NOVERL == '大主宰.txt'):
    textStartURL = 'http://www.bxwx8.org/b/62/62724/11455540.html';#大主宰第一章的URL
    textStartURL = 'http://www.bxwx8.org/b/62/62724/28019405.html';#第一千兩百三十七章 鬼大師
  else:  
    textStartURL = 'http://www.bxwx8.org/b/98/98289/17069215.html';#擇天記第一章URL
    textStartURL = 'http://www.bxwx8.org/b/98/98289/28088874.html';#擇天記第七十八章 合劍術(shù)

    textStartURL = 'http://www.bxwx8.org/b/35/35282/5839471.html';#武動(dòng)乾坤第一章
    #textStartURL = 'http://www.bxwx8.org/b/35/35282/7620539.html';#武動(dòng)乾坤
  nextURL = textStartURL;

  isEnd = False

  f = open(NOVERL, 'w', encoding='utf-8')  
  f.close()

  numChapter = 0;
  while(not isEnd):
    nextURL,isEnd = findNextTextURL(nextURL)

  print('end of capture!')
  print('獲取到 ' + str(numChapter) + ' 章')

獲取內(nèi)容和下一章URL

#找到 下一章節(jié)的URL
#獲取小說內(nèi)容
def findNextTextURL(url):
  global numChapter
  global NOVERL
  #如果nextURL == endURL 則返回false

  if(NOVERL == '大主宰.txt'):
    endURL = 'http://www.bxwx8.org/b/62/62724/index.html'#大主宰
    headURL = 'http://www.bxwx8.org/b/62/62724/'#大主宰
  else:  
    endURL = 'http://www.bxwx8.org/b/98/98289/index.html'#擇天記
    headURL = 'http://www.bxwx8.org/b/98/98289/'#擇天記

    endURL = 'http://www.bxwx8.org/b/35/35282/index.html'#武動(dòng)乾坤
    headURL = 'http://www.bxwx8.org/b/35/35282/'#武動(dòng)乾坤

  isEnd = False 


  resp   = urllib.request.urlopen(url)

  #處理的字符的確是gbk的,但是其中夾雜的部分特殊字符,
  #是gbk編碼中所沒有的如果有些特殊字符是GB18030中有的,但是是gbk中沒有的。
  #則用gbk去解碼,去所不支持的字符,也比如會(huì)出錯(cuò)。
  #所以,此種情況,可以嘗試用和當(dāng)前編碼(gbk)所兼容的但所包含字符更多的編碼(gb18030)去解碼,或許就可以了。
  #allHtml = resp.read().decode('gbk')#
  allHtml = resp.read().decode('gb18030')#

  textSoup = BeautifulSoup(allHtml)

  #章節(jié)名
  strChapter = textSoup.find(id='title').getText().split(r'【')[0]
  strChapter = strChapter.split(r'(')[0]
  strChapter = strChapter.replace('正文 ','') + '\n'
  numChapter = numChapter + 1
  strID = '#' + str(numChapter) + '-'
  strChapter = strID + strChapter

  strChapter = strChapter + '\n------------------------------\n' + url + '\n------------------------------\n'
  #小說正文
  strNovel = textSoup.find(id='content').getText()
  strNovel = strNovel.replace('  ','\n')

  #除去正文中多余的第XXX章
  strMatch = r"第[\u4e00-\u9fa5]+章"
  list2replace = re.findall(strMatch, strNovel)
  if list2replace:
    str2replace = list2replace[0]
    strNovel = strNovel.replace(str2replace, '')

  #合并章節(jié)和正文
  strNovel = strChapter + strNovel + '\n------------------------------\n------------------------------\n'

  #寫到txt文件中
  write2TXT(strNovel)

  #獲取下一個(gè)章節(jié)的URL
  nextURL = re.findall(r'var next_page = "[\w]+.html"', allHtml)[0]
  nextURL = nextURL.replace(r'"', '')
  nextURL = nextURL.replace(r'var next_page = ', '')
  nextURL = headURL + nextURL

  print(numChapter)#章節(jié)數(shù)
  print(strChapter)#章節(jié)名字
  print((nextURL))#下一章URL


  if(endURL == nextURL):
    isEnd = True

  return nextURL,isEnd

寫入TXT

#寫到文本文件中
def write2TXT(txt):
  global NOVERL

  f = open(NOVERL, 'a', encoding='utf-8')
  f.write(txt + '\n\n')
  f.close()

結(jié)束語(yǔ)

三個(gè)說明:

  • txt文本的編排肯定不好,而且在Kindle里面無法自動(dòng)分章,多看閱讀可以,原生系統(tǒng)就GG了,所以下一步可以用epubBuilder這款軟件進(jìn)行二次編排,輸出mobi導(dǎo)入你的Kindle。
  • 本程序只是針對(duì)這個(gè)網(wǎng)站而已,但是如果網(wǎng)站換了,細(xì)節(jié)性代碼就得重新寫了。不過大框架還可以用。
  • 網(wǎng)絡(luò)小說毒害有志青年,一入網(wǎng)文深是海,從此節(jié)操是路人,諸君且行且珍惜!

總結(jié)

以上就是本文關(guān)于Python下載網(wǎng)絡(luò)小說實(shí)例代碼的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!

相關(guān)文章

  • 用django設(shè)置session過期時(shí)間的方法解析

    用django設(shè)置session過期時(shí)間的方法解析

    這篇文章主要介紹了用django設(shè)置session過期時(shí)間的方法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Python利用BeautifulSoup解析Html的方法示例

    Python利用BeautifulSoup解析Html的方法示例

    BeautifulSoup是python的一個(gè)庫(kù),最主要的功能是從網(wǎng)頁(yè)抓取數(shù)據(jù)。下面這篇文章主要給大家介紹了關(guān)于Python利用BeautifulSoup解析Html的方法示例,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面跟著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-07-07
  • 詳解Python函數(shù)中的幾種參數(shù)

    詳解Python函數(shù)中的幾種參數(shù)

    這篇文章主要為大家介紹了Python參數(shù)的使用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • 使用Python生成F分布表并導(dǎo)出為Excel文件的代碼實(shí)現(xiàn)

    使用Python生成F分布表并導(dǎo)出為Excel文件的代碼實(shí)現(xiàn)

    在統(tǒng)計(jì)分析中,F FF分布是一種非常重要的連續(xù)概率分布,廣泛應(yīng)用于方差分析、回歸分析的顯著性檢驗(yàn)等場(chǎng)景,為了方便查閱和使用F分布的臨界值,本文給大家介紹了使用Python生成F分布表并導(dǎo)出為Excel文件,需要的朋友可以參考下
    2024-11-11
  • Python Selenium庫(kù)的基本使用教程

    Python Selenium庫(kù)的基本使用教程

    這篇文章主要給大家介紹了關(guān)于Python Selenium庫(kù)的基本使用教程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • matplotlib.pyplot.matshow 矩陣可視化實(shí)例

    matplotlib.pyplot.matshow 矩陣可視化實(shí)例

    這篇文章主要介紹了matplotlib.pyplot.matshow 矩陣可視化實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • 用python實(shí)現(xiàn)學(xué)生管理系統(tǒng)

    用python實(shí)現(xiàn)學(xué)生管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了用python實(shí)現(xiàn)學(xué)生管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • python 下載文件的多種方法匯總

    python 下載文件的多種方法匯總

    這篇文章主要介紹了python 下載文件的多種方法匯總,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-11-11
  • python通過http上傳文件思路詳解

    python通過http上傳文件思路詳解

    這篇文章主要介紹了python通過http上傳文件,在post請(qǐng)求中,用files參數(shù)來接受文件對(duì)象相關(guān)的參數(shù),通過data/json參數(shù)接受post請(qǐng)求體的其他參數(shù)
    2021-07-07
  • Queue隊(duì)列中join()與task_done()的關(guān)系及說明

    Queue隊(duì)列中join()與task_done()的關(guān)系及說明

    這篇文章主要介紹了Queue隊(duì)列中join()與task_done()的關(guān)系及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02

最新評(píng)論

镇平县| 拜城县| 雷波县| 双牌县| 塘沽区| 德钦县| 通渭县| 东平县| 正镶白旗| 泾川县| 新昌县| 金川县| 保山市| 长春市| 承德县| 历史| 长乐市| 克山县| 道真| 咸阳市| 开远市| 永州市| 邓州市| 西丰县| 新宾| 龙川县| 山阴县| 西乌珠穆沁旗| 嘉定区| 德令哈市| 抚顺县| 安龙县| 鄂托克前旗| 隆昌县| 集贤县| 田东县| 天等县| 石林| 南木林县| 潢川县| 贵德县|