Python爬取分析全網最硬核糉子(附源碼)

↑ 點擊上方 一行數據” 關注 + 星標 ~ 

行哥文章錯1字10元紅包,絕不錯過


上週抽書的中獎暱稱爲【麻瓜】,請24小時候之內來聯繫我。本文在看轉發依然抽一本書,本週日開獎哦

說到糉子,想必大家都是會想起這些普通的糉子,即使再有南北差異大家也見怪不怪了

但有種硬核糉子的味道在行哥的記憶裏一直不能忘懷,那就是《盜墓筆記》裏的糉子。這種糉子最好需要黑驢蹄子來搭配食用更加美味哦

本文行哥爬取了整本的《盜墓筆記》來分析一下糉子的口味到底有多奇特

1.代碼爬取

本文將通過小說網站http://www.daomubiji.com/來爬取整本盜墓筆記並保存,在這一過程中使用python網絡庫requests實現簡單的python爬蟲以及使用html文檔分析庫BeautifulSoup分析

網頁爬取代碼如下,可以複製粘貼直接運行

# 公衆號:一行數據
from bs4 import BeautifulSoup
import requests
import re


# 獲取每本書的鏈接
def get_book_urls(url):
    book_urls = []

    index = requests.get("http://www.daomubiji.com/")
    soup = BeautifulSoup(index.content.decode("utf8"), 'lxml')

    articles = soup.find_all("article", class_='article-content')
    for article in articles:
        links = article.find_all('a', href=re.compile("dao-mu-bi-ji"))
        for link in links:
            book_urls.append(link["href"])

    return book_urls


# 獲取每章的鏈接
def get_chapter_urls(url):
    chapter_urls = []
    page = requests.get(url)
    soup = BeautifulSoup(page.content.decode("utf8"), "lxml")

    articles = soup.find_all("article", class_="excerpt excerpt-c3")
    for article in articles:
        chapter_urls.append(article.a["href"])

    return chapter_urls


# 獲取每章的內容
def get_content(url):
    content = ""
    page = requests.get(url)
    soup = BeautifulSoup(page.content.decode("utf8"), "lxml")

    title = soup.find_all("h1", class_="article-title")[0].string
    content += ("\n" + title + "\n\n")

    articles = soup.find_all("article", class_="article-content")
    for article in articles:
        ps = article.find_all('p')
        for p in ps:
            for string in p.strings:
                content = content + string + "\n"

    return content


# 獲取全本《盜墓筆記》並保存到文件
def get_article(url):
    print(1)
    book_urls = get_book_urls(url)
    print(1)
    chapter_urls = []
    for url in book_urls:
        print(1)
        # url = "http://www.daomubiji.com/dao-mu-bi-ji-2"
        chapter_urls.extend(get_chapter_urls(url))
    print(chapter_urls)

    result = ""

    for chapter_url in chapter_urls:
        content = get_content(chapter_url)
        result += content
        print(content)

    with open("daomubiji.txt", "a") as f:
        f.write(result.encode("utf8"))


get_article("http://www.daomubiji.com/")

2.糉子分析

依稀記得書中的糉子種類繁多

  • 大糉子:厲害的殭屍、惡鬼之類的東西

  • 老糉子:可發生屍變的不好對付的殭屍

  • 幹糉子:是指墓裏的屍體爛得只剩下一堆白骨了。

  • 肉糉子:是指屍體身上值錢的東西多。

  • 血糉子:血屍墓中的糉子,最厲害。

  • 黴糉子:是指具有屍毒的屍體。

  • 女糉子:女屍屍化後的糉子,比普通糉子更厲害

這裏把前三本書中出現“糉子”的每句話給提取出來,並生成一張詞雲圖來展示一下糉子的味道,可以看到四字的拆分比兩字拆分描述得更深刻一些

4字分詞

代碼如下:

import jieba
from wordcloud import WordCloud,ImageColorGenerator
from matplotlib import pyplot as plt
from PIL import Image
import numpy as np
with open('zongzi','r',encoding="UTF-8") as file1:
    content = "".join(file1.readlines())
content_after = "/".join(word for word in jieba.cut(content, cut_all=True) if len(word) <= 3)

print(content_after)
##添加的代碼,把剛剛你保存好的圖片用Image方法打開,
##然後用numpy轉換了一下
images = Image.open("zongzi2.jpg")
maskImages = np.array(images)

# ##修改了一下wordCloud參數,就是把這些數據整理成一個形狀,
# ##具體的形狀會適應你的圖片的.
wc = WordCloud(font_path="/Library/Fonts/Songti.ttc",background_color="black",max_words=1000,max_font_size=100,width=1500,height=1500,mask=maskImages).generate(content_after )
plt.imshow(wc)

wc.to_file('wolfcodeTarget3.png')

3.最後

在這裏祝大家糉子節快樂

上週抽書的中獎暱稱爲【麻瓜】,請24小時候之內來聯繫我。本文在看轉發依然抽一本書,本週日開獎哦

「本文參考:https://www.cnblogs.com/sench/p/9447255.html」

——— / 往期精選 / ————

後臺回覆「進羣」可以加入我們的社羣哦~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章