日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python爬虫之一:爬取网页小说(魂破九天)

發布時間:2023/12/18 python 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python爬虫之一:爬取网页小说(魂破九天) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

近期做一個項目需要用到python,只懂皮毛的我花了三天時間將python重新拾起啃一啃,總算對python有了一定的認識。
然后有根據爬蟲基本原理爬取了一本小說,其他爬取小說的方法類似,結果見個人資源下載(本想下載分設置為0,結果CSDN設置最低為2分,沒有積分的可以加我qq要該小說)。
**爬蟲原理:1、模擬人打開一頁小說網頁
2、將網頁保存下來
3、將網頁關鍵字保存下來
4、循環**
環境:python2.7,安裝BeautifulSoup,win7-64bit,sublime text3
需要的基本知識(這些基本的網頁知識我后面有時間會總結下,現在不知道可以先百度下):HTML5基本知識(標簽,屬性),BeautifulSoup基本知識。
小說首頁地址:http://www.xinshubao.net/0/927/45819.html (魂破九天)
爬取該頁內容進行分析:通過分析網頁地址分為兩段,地址頭為:http://www.xinshubao.net/0/927/ 地址尾為45819.html(可以通過網頁獲取到)
代碼如下:

#coding:utf-8 import sys reload(sys) sys.setdefaultencoding('utf8') from bs4 import BeautifulSoup import urllibdef getHtmlCode(url): #輸入為網頁地址,輸出為網頁源碼page = urllib.urlopen(url)html = page.read()return html urlHead = 'http://www.xinshubao.net/0/927/' urlEnd = '45819.html' url = urlHead + urlEnd def parser(url): #輸入為網頁地址,輸出為解析后網頁的結構str1 = getHtmlCode(url)soup = BeautifulSoup(str1,"html.parser")temp = soup.prettify()print tempreturn soup parser(url)

通過爬取連續的幾頁分析可知,每章節分為兩頁,兩章內容連在一起就是一章。
1、小說主要內容在<div id="content">標簽中

<div id="content">第一章 狼心狗肺<br /><br />縱橫帝國,清風鎮。<br /><br />“頭好痛!”<br /><br />秦朗感覺大腦一陣刺痛,無數的信息涌進腦海!<br /><br />十年前,秦家族山!<br /><br />同年,秦戰海之子,只有五歲的秦朗覺醒武魂,而且是百年難得一見的六星火龍武魂,被譽為清風鎮數百年來的第一天才!<br /><br />葉家更是錦上添花,將家主之nv葉可清許配給了秦朗!<br /><br />但讓人大跌眼鏡的是,不知為何,天賦絕佳的秦朗足足用了十年時間,實力依然停留在武徒一重!秦朗更是被廢除了少族長之位!<br /><br />而反觀與秦朗訂婚的葉可清,不但出落的越來越漂亮,被稱為清風鎮第一美nv!<br /><br />而且僅用十年時間便修煉到了武徒九重,乃是清風鎮數一數二的天才,與秦朗形成了鮮明對比!<br /><br />清風鎮人人都在嘆息,真是一朵鮮花cha在了牛糞上!<script>s3();</script><br />不過,讓所有人不解的是,葉家似乎絲毫沒有要與秦朗解除婚約的意思……<br /><!--省略-->秦朗激動的發現<br /><br /></div>

2、獲取該標簽內容并通過正則表達式(需要導入re),代碼:

def resolve(url):html=parser(url)content = html.find_all('div',id='content')content = str(content[0])content = content.replace('<br />','')print content resolve(url)

結果:

可以看到這個中間還有其他標簽<script>s3();</script>這些標簽不是小說的內容應該刪除,
2.1、將標簽內容替換為空:

def resolve(url):html=parser(url)content = html.find_all('div',id='content')content = str(content[0])content = content.replace('<br />','')# print contentmatch = re.compile('<(.*)>')taglist = match.findall(content)for tag in taglist:tag = '<' + tag +'>'content = content.replace(tag,'')content = content.replace('\n','')print content resolve(url)

結果:


3、找到下一頁地址
根據網頁源代碼可以找到下一頁的地址:

def nextUrl(url):html = str(parser(url))pattern = re.compile('<a href="(.*).html')chapterList = pattern.findall(html)url = urlHead + chapterList[1] + '.html'print urlreturn url nextUrl(url)

運行結果:http://www.xinshubao.net/0/927/45819_2.html
4、將兩頁連在一起

def resolve(url):html = parser(url)content = html.find_all('div',id='content')content = str(content[0])# print contentcontent = content.replace('<br />','')# print contentpattern = re.compile('<(.*)>')text = pattern.findall(content)# print textfor line in text:line = '<' + line +'>'content = content.replace(line,'')content = content.replace('\n','')tmp = nextUrl(url)index = tmp.find('_2')if -1 == index: #如果是不同章節之間就空一行content = content + '\n\n'print contentreturn content

5、抓取整篇小說

def main(url):flag = Truetxt = ''count = 0 #防止網頁吊死while flag:try:index = url.find('9316313_2') #最后一頁f = open(u'魂破九天.txt','a+') #追加tempTxt = resolve(url)f.write(tempTxt)f.close()url = nextUrl(url)if -1 != index or count == 2000:flag = Falseexcept Exception as e:raiseelse:passfinally:count = count + 1print u'第%0.1f章 網頁地址 %s'% (count/2.0,url)

好了整個爬取網頁小說的教程到此結束!
全部代碼如下:

#coding:utf-8 import re import sys reload(sys) sys.setdefaultencoding('utf8') from bs4 import BeautifulSoup import urllibdef getHtmlCode(url):page = urllib.urlopen(url)html = page.read()return html urlHead = 'http://www.xinshubao.net/0/927/' urlEnd = '45819.html' url = urlHead + urlEnd def parser(url):str1 = getHtmlCode(url)soup = BeautifulSoup(str1,"html.parser")temp = soup.prettify()return soup def nextUrl(url):html = str(parser(url))pattern = re.compile('<a href="(.*).html')chapterList = pattern.findall(html)url = urlHead + chapterList[1] + '.html'return url def resolve(url):html=parser(url)content = html.find_all('div',id='content')content = str(content[0])content = content.replace('<br />','')# print contentmatch = re.compile('<(.*)>')taglist = match.findall(content)for tag in taglist:tag = '<' + tag +'>'content = content.replace(tag,'')content = content.replace('\n','')urlNext = nextUrl(url)isSameChapter = urlNext.find('_2')if -1 == isSameChapter:content = content + '\n\n'# print contentreturn content def main(url):flag = Truetxt = ''count = 0 #防止網頁吊死while flag:try:index = url.find('9316313_2') #最后一頁f = open(u'魂破九天.txt','a+') #追加tempTxt = resolve(url)f.write(tempTxt)f.close()url = nextUrl(url)if -1 != index or count == 2000:flag = Falseexcept Exception as e:raiseelse:passfinally:count = count + 1print u'第%0.1f章 網頁地址 %s'% (count/2.0,url)main(url)

結果圖:

總結

以上是生活随笔為你收集整理的python爬虫之一:爬取网页小说(魂破九天)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。