Python實(shí)現(xiàn)爬取逐浪小說(shuō)的方法
本文實(shí)例講述了Python實(shí)現(xiàn)爬取逐浪小說(shuō)的方法。分享給大家供大家參考。具體分析如下:
本人喜歡在網(wǎng)上看小說(shuō),一直使用的是小說(shuō)下載閱讀器,可以自動(dòng)從網(wǎng)上下載想看的小說(shuō)到本地,比較方便。最近在學(xué)習(xí)Python的爬蟲,受此啟發(fā),突然就想到寫一個(gè)爬取小說(shuō)內(nèi)容的腳本玩玩。于是,通過(guò)在逐浪上面分析源代碼,找出結(jié)構(gòu)特點(diǎn)之后,寫了一個(gè)可以爬取逐浪上小說(shuō)內(nèi)容的腳本。
具體實(shí)現(xiàn)功能如下:輸入小說(shuō)目錄頁(yè)的url之后,腳本會(huì)自動(dòng)分析目錄頁(yè),提取小說(shuō)的章節(jié)名和章節(jié)鏈接地址。然后再?gòu)恼鹿?jié)鏈接地址逐個(gè)提取章節(jié)內(nèi)容?,F(xiàn)階段只是將小說(shuō)從第一章開始,每次提取一章內(nèi)容,回車之后提取下一章內(nèi)容。其他網(wǎng)站的結(jié)果可能有不同,需要做一定修改。在逐浪測(cè)試過(guò)正常。
現(xiàn)分享此代碼,一是做個(gè)記錄,方便自己以后回顧。二么也想拋磚引玉,希望各路大神不吝賜教。
#-*-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 完成目錄中正則提取第*章,提取出章節(jié)鏈接并下載。在逐浪測(cè)試下載無(wú)誤。
from bs4 import BeautifulSoup
import urllib2,re
def 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]
# 提取小說(shuō)名
menu = []
all_text = soup.find_all('a',target="_blank")
# 提取記載有小說(shuō)章節(jié)名和鏈接地址的模塊
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)
# 把記載有小說(shuō)章節(jié)名和鏈接地址的列表插入列表中
return menu,novel
def get_chapter(name,url):
"""Get every chapter in menu"""
html=urllib2.urlopen(url).read()
soup=BeautifulSoup(html)
content=soup.find_all('p') # 提取小說(shuō)正文
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'
# 輸出獲取到的小說(shuō)名和章節(jié)數(shù)
for i in menu:
chapter=get_chapter(i[0],i[1])
raw_input()
print '\n'+i[0]+'\n'
print chapter
print '\n'
希望本文所述對(duì)大家的Python程序設(shè)計(jì)有所幫助。
- python使用XPath解析數(shù)據(jù)爬取起點(diǎn)小說(shuō)網(wǎng)數(shù)據(jù)
- python爬蟲之爬取筆趣閣小說(shuō)
- python爬取晉江文學(xué)城小說(shuō)評(píng)論(情緒分析)
- Python爬蟲入門教程02之筆趣閣小說(shuō)爬取
- python 爬取小說(shuō)并下載的示例
- python爬取”頂點(diǎn)小說(shuō)網(wǎng)“《純陽(yáng)劍尊》的示例代碼
- Python scrapy爬取小說(shuō)代碼案例詳解
- Python爬取365好書中小說(shuō)代碼實(shí)例
- python爬蟲爬取筆趣網(wǎng)小說(shuō)網(wǎng)站過(guò)程圖解
- Python實(shí)現(xiàn)的爬取小說(shuō)爬蟲功能示例
- Python爬蟲之爬取最新更新的小說(shuō)網(wǎng)站
相關(guān)文章
python線程池ThreadPoolExecutor,傳單個(gè)參數(shù)和多個(gè)參數(shù)方式
這篇文章主要介紹了python線程池ThreadPoolExecutor,傳單個(gè)參數(shù)和多個(gè)參數(shù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03
對(duì)python過(guò)濾器和lambda函數(shù)的用法詳解
今天小編就為大家分享一篇對(duì)python過(guò)濾器和lambda函數(shù)的用法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01
Python實(shí)現(xiàn)笑臉檢測(cè)+人臉口罩檢測(cè)功能
這篇文章主要介紹了Python實(shí)現(xiàn)笑臉檢測(cè)+人臉口罩檢測(cè),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-08-08
Python中super函數(shù)用法實(shí)例分析
這篇文章主要介紹了Python中super函數(shù)用法,結(jié)合實(shí)例形式詳細(xì)分析了Python中super函數(shù)的功能、調(diào)用父類相關(guān)原理、操作技巧與注意事項(xiàng),需要的朋友可以參考下2019-03-03
如何以Winsows Service方式運(yùn)行JupyterLab
這篇文章主要介紹了如何以Winsows Service方式運(yùn)行JupyterLab的教程2020-08-08
Python協(xié)程的四種實(shí)現(xiàn)方式總結(jié)
今天繼續(xù)給大家介紹Python關(guān)知識(shí),本文主要內(nèi)容是Python協(xié)程的四種實(shí)現(xiàn)方式。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-01-01

