利用爬蟲技術(shù)爬取“火星引力”的小說“天辰”

一诡必、前沿

首先推薦一個好看的網(wǎng)絡(luò)小說網(wǎng)站:武俠world,又可以學(xué)英語搔扁,又可以看小說爸舒,還可以治療各種上癮癥(無法治療小說癮),非常不錯稿蹲。

這段時間真是小說荒扭勉,好看的網(wǎng)絡(luò)小說本來就少,而且更新得實(shí)在是太慢苛聘,于是想到把之前得小說再翻出來看看涂炎。雖然,網(wǎng)上免費(fèi)的小說網(wǎng)站不少设哗,但廣告實(shí)在是太多唱捣,于是想自己把小說下載下來,方便又無廣告网梢,總之就是綠色無污染震缭,還可以練習(xí)一下爬蟲技術(shù)。這里選擇爬取“火星引力”的小說“天辰”战虏,推薦大家閱讀“火星引力”的小說拣宰。

一党涕、爬蟲思路

首先,在利用國內(nèi)最大的爬蟲之百度巡社,找到想要爬去的網(wǎng)站膛堤,主要是測試一下網(wǎng)站的訪問速度,再確定是否為選擇目標(biāo)重贺。這次選擇的目標(biāo)就是筆趣閣

選擇目標(biāo)后骑祟,接著就是分析網(wǎng)站,看看網(wǎng)站爬去的難度气笙,再根據(jù)難度選擇爬去目標(biāo)的工具次企。

經(jīng)過分析,該網(wǎng)站的請求方式為GET潜圃,連續(xù)點(diǎn)擊“下一章”缸棵,發(fā)現(xiàn)沒有采用AJAX等技術(shù),URL規(guī)則也比較簡單谭期,確定初始URL及最終URL后就可以爬取所有的章節(jié)了堵第,總之,爬取不會有什么難度隧出,先選擇單線程的方式實(shí)現(xiàn)踏志。



最后,具體的實(shí)現(xiàn)過程胀瞪,先考慮爬取一章的內(nèi)容针余,再保存在本地txt文件中,接著進(jìn)行格式的調(diào)整凄诞,讓文章格式看起來更舒服圆雁,用戶體驗(yàn)感更好,最后再擴(kuò)展到爬取所有的章節(jié)帆谍,保存所有的章節(jié)伪朽。這些都完成后,還可以考慮采取多線程汛蝙、進(jìn)程烈涮、協(xié)程等方式提高爬取的效率,當(dāng)然這是后話患雇。

三跃脊、具體實(shí)現(xiàn)過程

開始擼代碼

import requests
from fake_useragent import UserAgent
import random
from lxml import etree
import time


def parse_page(url,offset):
    headers = {
        'Cookie': 'fikker-tShm-4UR5=LUtS2wHKlLdAbGv9tKnSBCJKZGZWP3pA; fikker-tShm-4UR5=LUtS2wHKlLdAbGv9tKnSBCJKZGZWP3pA; UM_distinctid=16a5797e00ca7-02a4dfb07b62ea-3b65470f-e1000-16a5797e00e1b4; CNZZDATA1273376891=1130256466-1556246740-https%253A%252F%252Fwww.baidu.com%252F%7C1556246740; bcolor=; font=; fontcolor=; width=; size=12pt',
        'Host': 'www.biqiuge.com',
        'Referer': 'https://www.biqiuge.com/book/29463/1823{0}.html'.format(offset-1),
        'User-Agent': random.choice([UserAgent().chrome, UserAgent().firefox, UserAgent().ie])
    }
    resp = requests.get(url,headers=headers)
    #判斷請求是否成功
    if resp.status_code == 200:
        fp = open('tiancheng.txt','a',encoding='utf-8')
        #設(shè)置網(wǎng)站的編碼方式
        resp.encoding = resp.apparent_encoding
        tree = etree.HTML(resp.text)
        #獲取標(biāo)題
        title = tree.xpath('//div[@class="content"]/h1/text()')[0]
        #獲取小說內(nèi)容
        contents = tree.xpath('//div[@id="content"]//text()')
        print('正在保存“天辰”:{0}'.format(title))
        #多方嘗試,還是這種一行行的保存格式更好看
        fp.write(title + '\n')
        for content in contents[:-3]:
            content = ''.join(content).strip()
            fp.write('\n' + content)
        fp.write(100 * '=' + '\n')
        fp.close()
    else:
        print("請求頁面出錯:{0}".format(resp.status_code))


def main():
    for offset in range(3971,4536):
        url = 'https://www.biqiuge.com/book/29463/1823{0}.html'.format(offset)
        parse_page(url,offset)
        #限制一下爬取的速度
        time.sleep(1)
    print("下載完畢")


if __name__ == '__main__':
    main()

四苛吱、展示成果

五酪术、分析小說內(nèi)容

from matplotlib.pylab import plt
from wordcloud import WordCloud
import jieba
import re


string = []
text = 'tiancheng.txt'#文件名稱
fp = open(text,'r',encoding='utf-8')#打開文件
cut = jieba.cut(fp.read())#讀取小說
strings = ' '.join(cut)#切割內(nèi)容轉(zhuǎn)換成字符串
string_data = re.sub(r'【|】|=|“|”|《|》|%|\d+|—','', strings)#將字符串中的特殊字符替換位空字符
string.append(string_data)

font = 'C:\Windows\Fonts\msyh.ttc'#微軟黑體字體安裝路徑
wc = WordCloud(font_path=font,
               background_color='white',
               width=1000,
               height=800)


wc.generate_from_text("".join(string))#生成詞云
wc.to_file('tiancheng.png')#保存圖片
plt.imshow(wc)#用plt顯示圖片
plt.axis('off')#不顯示坐標(biāo)軸
plt.show()#顯示圖片
fp.close()#關(guān)閉文件

最后,不用看也知道主角是誰了吧。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末绘雁,一起剝皮案震驚了整個濱河市橡疼,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌庐舟,老刑警劉巖欣除,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異挪略,居然都是意外死亡历帚,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進(jìn)店門杠娱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來挽牢,“玉大人,你說我怎么就攤上這事摊求∏莅危” “怎么了?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵室叉,是天一觀的道長睹栖。 經(jīng)常有香客問我,道長茧痕,這世上最難降的妖魔是什么野来? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮踪旷,結(jié)果婚禮上梁只,老公的妹妹穿的比我還像新娘。我一直安慰自己埃脏,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布秋忙。 她就那樣靜靜地躺著彩掐,像睡著了一般。 火紅的嫁衣襯著肌膚如雪灰追。 梳的紋絲不亂的頭發(fā)上堵幽,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天,我揣著相機(jī)與錄音弹澎,去河邊找鬼朴下。 笑死,一個胖子當(dāng)著我的面吹牛苦蒿,可吹牛的內(nèi)容都是我干的殴胧。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼团滥!你這毒婦竟也來了竿屹?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤灸姊,失蹤者是張志新(化名)和其女友劉穎拱燃,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體力惯,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡碗誉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了父晶。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片哮缺。...
    茶點(diǎn)故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖诱建,靈堂內(nèi)的尸體忽然破棺而出蝴蜓,到底是詐尸還是另有隱情,我是刑警寧澤俺猿,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布茎匠,位于F島的核電站,受9級特大地震影響押袍,放射性物質(zhì)發(fā)生泄漏诵冒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一谊惭、第九天 我趴在偏房一處隱蔽的房頂上張望汽馋。 院中可真熱鬧,春花似錦圈盔、人聲如沸豹芯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽铁蹈。三九已至,卻和暖如春众眨,著一層夾襖步出監(jiān)牢的瞬間握牧,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工娩梨, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留沿腰,地道東北人。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓狈定,卻偏偏與公主長得像颂龙,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內(nèi)容

  • MKL-015 詭異辯者 一厘托、簡介 度四海友雳,賭神,賭皇齋“圣手”铅匹,可以用各種未知手段押赊,可以完成各種其他賭神無...
    咀黑先生閱讀 744評論 0 5
  • 不知不覺,十二月份已經(jīng)來了包斑,彷徨得十一月份還沒有來得及叫囂流礁,晃蕩的十月份還沒來得及喘息,擱淺的畢業(yè)后幾個月份沒來得...
    七月上的冥王星閱讀 156評論 0 0
  • 漫漫長夜,了無睡意萌抵。心情莫名的煩躁找御,一股淡淡的憂傷油然而生。毫無疑問绍填,今夜也是一個失眠的夜晚霎桅。工作生活壓力、缺乏理...
    一方一克閱讀 1,062評論 0 0
  • 看看怎么發(fā)文
    膳食人閱讀 136評論 0 0