分享一個(gè)基于Python的電子書(shū)數(shù)據(jù)采集與可視化分析系統(tǒng) (源碼跋核、調(diào)試岖瑰、LW、開(kāi)題砂代、PPT)

????作者:計(jì)算機(jī)源碼社
????個(gè)人簡(jiǎn)介:本人 八年開(kāi)發(fā)經(jīng)驗(yàn)蹋订,擅長(zhǎng)Java、Python刻伊、PHP露戒、.NET、Node.js捶箱、Android智什、微信小程序、爬蟲(chóng)讼呢、大數(shù)據(jù)撩鹿、機(jī)器學(xué)習(xí)等,大家有這一塊的問(wèn)題可以一起交流悦屏!

1节沦、研究背景

??隨著數(shù)字化時(shí)代的到來(lái)键思,電子書(shū)市場(chǎng)呈現(xiàn)出蓬勃發(fā)展的態(tài)勢(shì)。海量的電子書(shū)數(shù)據(jù)不僅包含豐富的文本內(nèi)容甫贯,還蘊(yùn)含著讀者偏好吼鳞、市場(chǎng)趨勢(shì)等valuable信息。然而叫搁,這些數(shù)據(jù)往往分散在不同的平臺(tái)和渠道中赔桌,缺乏系統(tǒng)性的收集和分析。傳統(tǒng)的數(shù)據(jù)處理方法難以應(yīng)對(duì)如此龐大且復(fù)雜的數(shù)據(jù)集渴逻,也無(wú)法充分挖掘其中的潛在價(jià)值疾党。因此,開(kāi)發(fā)一個(gè)能夠高效采集惨奕、處理和分析電子書(shū)數(shù)據(jù)的系統(tǒng)變得尤為重要雪位,以滿足出版商、作者梨撞、研究人員等多方面的需求雹洗。

2、研究目的和意義

??本系統(tǒng)的開(kāi)發(fā)旨在構(gòu)建一個(gè)綜合性的電子書(shū)數(shù)據(jù)采集與可視化分析平臺(tái)卧波。通過(guò)利用Python強(qiáng)大的數(shù)據(jù)處理能力和豐富的第三方庫(kù)时肿,系統(tǒng)將實(shí)現(xiàn)對(duì)多個(gè)電子書(shū)平臺(tái)的自動(dòng)化數(shù)據(jù)采集,包括但不限于書(shū)籍基本信息港粱、銷量數(shù)據(jù)螃成、讀者評(píng)價(jià)等。采集到的數(shù)據(jù)將經(jīng)過(guò)清洗查坪、整理和存儲(chǔ)锈颗,為后續(xù)的分析提供基礎(chǔ)。系統(tǒng)還將整合各種數(shù)據(jù)分析工具和算法咪惠,對(duì)采集到的數(shù)據(jù)進(jìn)行多維度的統(tǒng)計(jì)和挖掘击吱,如銷量趨勢(shì)分析、讀者偏好分析遥昧、熱門主題識(shí)別等覆醇。最后,通過(guò)直觀的可視化展示炭臭,使用戶能夠輕松理解復(fù)雜的數(shù)據(jù)分析結(jié)果永脓,為決策提供支持。

??該系統(tǒng)的開(kāi)發(fā)具有重要的實(shí)踐和理論意義鞋仍。從實(shí)踐角度來(lái)看常摧,它為出版行業(yè)提供了一個(gè)強(qiáng)大的數(shù)據(jù)分析工具,能夠幫助出版商更準(zhǔn)確地把握市場(chǎng)動(dòng)向,優(yōu)化出版策略落午,提高經(jīng)營(yíng)效益谎懦。對(duì)于作者而言,系統(tǒng)可以提供讀者反饋和市場(chǎng)表現(xiàn)的詳細(xì)分析溃斋,有助于改進(jìn)創(chuàng)作方向和風(fēng)格界拦。從學(xué)術(shù)研究的角度,該系統(tǒng)為文學(xué)梗劫、社會(huì)學(xué)享甸、市場(chǎng)學(xué)等領(lǐng)域的研究者提供了豐富的數(shù)據(jù)資源和分析方法,有助于深入探討數(shù)字閱讀時(shí)代的various現(xiàn)象梳侨。此外蛉威,本系統(tǒng)的開(kāi)發(fā)和應(yīng)用也將推動(dòng)大數(shù)據(jù)分析技術(shù)在文化產(chǎn)業(yè)中的進(jìn)一步應(yīng)用,為行業(yè)的數(shù)字化轉(zhuǎn)型貢獻(xiàn)力量走哺。

3瓷翻、系統(tǒng)研究?jī)?nèi)容

基于Python的電子書(shū)數(shù)據(jù)采集與可視化分析系統(tǒng),以下是建議的研究?jī)?nèi)容:
數(shù)據(jù)采集模塊:
設(shè)計(jì)和實(shí)現(xiàn)針對(duì)主流電子書(shū)平臺(tái)(如亞馬遜Kindle割坠、當(dāng)當(dāng)網(wǎng)、豆瓣讀書(shū)等)的爬蟲(chóng)程序
開(kāi)發(fā)自動(dòng)化數(shù)據(jù)采集策略妒牙,包括定時(shí)采集彼哼、增量更新等機(jī)制
實(shí)現(xiàn)對(duì)電子書(shū)基本信息、銷量數(shù)據(jù)湘今、用戶評(píng)價(jià)敢朱、閱讀數(shù)據(jù)等多維度信息的采集
研究并解決反爬蟲(chóng)機(jī)制、IP限制等數(shù)據(jù)采集過(guò)程中的技術(shù)挑戰(zhàn)

數(shù)據(jù)預(yù)處理與存儲(chǔ):
設(shè)計(jì)數(shù)據(jù)清洗算法摩瞎,處理缺失值拴签、異常值和重復(fù)數(shù)據(jù)
開(kāi)發(fā)數(shù)據(jù)標(biāo)準(zhǔn)化和結(jié)構(gòu)化處理流程,確保數(shù)據(jù)質(zhì)量和一致性
設(shè)計(jì)并實(shí)現(xiàn)適合大規(guī)模電子書(shū)數(shù)據(jù)的存儲(chǔ)方案旗们,如使用關(guān)系型數(shù)據(jù)庫(kù)或NoSQL數(shù)據(jù)庫(kù)
研究數(shù)據(jù)更新和版本控制機(jī)制蚓哩,確保數(shù)據(jù)的時(shí)效性和可追溯性

數(shù)據(jù)分析與挖掘:
開(kāi)發(fā)銷量趨勢(shì)分析模型,識(shí)別暢銷書(shū)特征和市場(chǎng)熱點(diǎn)
實(shí)現(xiàn)用戶評(píng)價(jià)文本的情感分析上渴,提取讀者對(duì)電子書(shū)的情感傾向
設(shè)計(jì)并實(shí)現(xiàn)基于機(jī)器學(xué)習(xí)的圖書(shū)分類和推薦算法
研究電子書(shū)內(nèi)容特征提取方法岸梨,如主題模型、關(guān)鍵詞提取等
開(kāi)發(fā)跨平臺(tái)數(shù)據(jù)對(duì)比分析功能稠氮,揭示不同平臺(tái)間的差異和聯(lián)系

可視化展示:
設(shè)計(jì)直觀曹阔、交互式的數(shù)據(jù)可視化界面
實(shí)現(xiàn)多種可視化圖表,如折線圖隔披、柱狀圖赃份、熱力圖、詞云等
開(kāi)發(fā)可定制的數(shù)據(jù)儀表板奢米,支持用戶自定義數(shù)據(jù)展示
研究并實(shí)現(xiàn)大規(guī)模數(shù)據(jù)的高效可視化渲染技術(shù)

系統(tǒng)集成與優(yōu)化:
設(shè)計(jì)模塊化抓韩、可擴(kuò)展的系統(tǒng)架構(gòu)
實(shí)現(xiàn)數(shù)據(jù)采集纠永、處理、分析和可視化的無(wú)縫集成
優(yōu)化系統(tǒng)性能园蝠,提高大數(shù)據(jù)處理和分析的效率
開(kāi)發(fā)用戶友好的操作界面渺蒿,提升系統(tǒng)可用性

4、系統(tǒng)頁(yè)面設(shè)計(jì)

微信截圖_20240909172906.png
微信截圖_20240909172920.png
微信截圖_20240909172930.png

5彪薛、參考文獻(xiàn)

[1]余力楊.精細(xì)化管理助推智慧圖書(shū)館建設(shè)[J].文化產(chǎn)業(yè),2024,(26):64-66.
[2]張振宇.數(shù)字經(jīng)濟(jì)時(shí)代茂装,經(jīng)管類圖書(shū)編輯大數(shù)據(jù)新平臺(tái)應(yīng)用[J].中國(guó)信息化,2024,(08):57-60.
[3]孟卉.數(shù)字技術(shù)讓圖書(shū)資料管理更“智慧”[J].文化產(chǎn)業(yè),2024,(23):31-33.
[4]周彥霽.大數(shù)據(jù)時(shí)代下圖書(shū)出版的創(chuàng)新路徑[J].傳播與版權(quán),2024,(13):19-21.DOI:10.16852/j.cnki.45-1390/g2.2024.13.017.
[5]楊敬.基于大數(shù)據(jù)技術(shù)的圖書(shū)館管理創(chuàng)新策略[J].蘭臺(tái)內(nèi)外,2024,(20):76-78.
[6]鄒偉真.大數(shù)據(jù)在圖書(shū)出版中的作用[J].中國(guó)報(bào)業(yè),2024,(12):214-215.DOI:10.13854/j.cnki.cni.2024.12.096.
[7]劉慧.數(shù)據(jù)驅(qū)動(dòng)的決策:智能圖書(shū)館運(yùn)營(yíng)的核心[J].河南圖書(shū)館學(xué)刊,2024,44(06):132-134.
[8]閆妮.新媒體重塑圖書(shū)業(yè)態(tài)[J].云端,2024,(23):62-64.
[9]齊超杰.面向圖書(shū)館高質(zhì)量發(fā)展的數(shù)智動(dòng)能涌現(xiàn)性研究[D].黑龍江大學(xué),2024.
[10]石豐源,程鋼.基于大數(shù)據(jù)的書(shū)籍推薦分析系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù),2024,20(14):66-69+72.DOI:10.14004/j.cnki.ckt.2024.0724.
[11]欒澤權(quán).數(shù)字化轉(zhuǎn)型視域下政府開(kāi)放數(shù)據(jù)價(jià)值實(shí)現(xiàn)路徑及共創(chuàng)機(jī)制研究[D].吉林大學(xué),2024. DOI:10.27162/d.cnki.gjlin.2024.000818.
[12]李冬燕.高校圖書(shū)館服務(wù)的智慧化探索[J].文化產(chǎn)業(yè),2024,(12):130-132.
[13]賴春盼.“三農(nóng)”知識(shí)普及與交互的電子圖書(shū)系統(tǒng)設(shè)計(jì)[J].廣西糖業(yè),2024,44(02):147-151.
[14]滕昕.構(gòu)建數(shù)字化圖書(shū)資源系統(tǒng)促進(jìn)幼兒閱讀活動(dòng)的實(shí)踐探索[J].教育傳播與技術(shù),2024,(02):80-86.
[15]田蕊.基于大數(shù)據(jù)技術(shù)的圖書(shū)數(shù)字信息資源管理系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn)[J].信息記錄材料,2024,25(04):134-136+139.DOI:10.16009/j.cnki.cn13-1295/tq.2024.04.042.
[16]錢海鋼.C2C模式的圖書(shū)共享服務(wù)設(shè)計(jì)研究[J].圖書(shū)館研究,2024,54(02):92-100.
[17]趙霞.智慧科技在圖書(shū)館管理中的應(yīng)用[J].文化產(chǎn)業(yè),2024,(08):86-88.
[18]郭冬艷.基于OA圖書(shū)引用量指標(biāo)的定量分析——以Dimensions數(shù)據(jù)平臺(tái)為例[J].今傳媒,2024,32(03):75-78.
[19]陳寧.師范生數(shù)據(jù)素養(yǎng)影響因素與培養(yǎng)策略研究[D].曲阜師范大學(xué),2024. DOI:10.27267/d.cnki.gqfsu.2024.000399.
[20]樊利利.互聯(lián)網(wǎng)時(shí)代下的學(xué)校圖書(shū)管理信息化建設(shè)[J].中國(guó)信息界,2024,(01):140-143.

6、核心代碼

# # -*- coding: utf-8 -*-

# 數(shù)據(jù)爬取文件

import scrapy
import pymysql
import pymssql
from ..items import DianzitushuItem
import time
from datetime import datetime,timedelta
import datetime as formattime
import re
import random
import platform
import json
import os
import urllib
from urllib.parse import urlparse
import requests
import emoji
import numpy as np
import pandas as pd
from sqlalchemy import create_engine
from selenium.webdriver import ChromeOptions, ActionChains
from scrapy.http import TextResponse
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
# 電子圖書(shū)
class DianzitushuSpider(scrapy.Spider):
    name = 'dianzitushuSpider'
    spiderUrl = 'https://read.douban.com/j/kind/'
    start_urls = spiderUrl.split(";")
    protocol = ''
    hostname = ''
    realtime = False


    def __init__(self,realtime=False,*args, **kwargs):
        super().__init__(*args, **kwargs)
        self.realtime = realtime=='true'

    def start_requests(self):

        plat = platform.system().lower()
        if not self.realtime and (plat == 'linux' or plat == 'windows'):
            connect = self.db_connect()
            cursor = connect.cursor()
            if self.table_exists(cursor, '0n4b129m_dianzitushu') == 1:
                cursor.close()
                connect.close()
                self.temp_data()
                return
        pageNum = 1 + 1

        for url in self.start_urls:
            if '{}' in url:
                for page in range(1, pageNum):

                    next_link = url.format(page)
                    yield scrapy.Request(
                        url=next_link,
                        callback=self.parse
                    )
            else:
                yield scrapy.Request(
                    url=url,
                    callback=self.parse
                )

    # 列表解析
    def parse(self, response):
        _url = urlparse(self.spiderUrl)
        self.protocol = _url.scheme
        self.hostname = _url.netloc
        plat = platform.system().lower()
        if not self.realtime and (plat == 'linux' or plat == 'windows'):
            connect = self.db_connect()
            cursor = connect.cursor()
            if self.table_exists(cursor, '0n4b129m_dianzitushu') == 1:
                cursor.close()
                connect.close()
                self.temp_data()
                return
        data = json.loads(response.body)
        try:
            list = data["list"]
        except:
            pass
        for item in list:
            fields = DianzitushuItem()


            try:
                fields["title"] = emoji.demojize(self.remove_html(str( item["title"] )))

            except:
                pass
            try:
                fields["picture"] = emoji.demojize(self.remove_html(str( item["cover"] )))

            except:
                pass
            try:
                fields["salesprice"] = float( item["salesPrice"]/100)
            except:
                pass
            try:
                fields["wordcount"] = int( item["wordCount"])
            except:
                pass
            try:
                fields["author"] = emoji.demojize(self.remove_html(str('善延,'.join(str(i['name']) for i in  item["author"]) )))

            except:
                pass
            try:
                fields["biaoqian"] = emoji.demojize(self.remove_html(str( item.get("biaoqian", "小說(shuō)") )))

            except:
                pass
            try:
                fields["detailurl"] = emoji.demojize(self.remove_html(str('https://read.douban.com'+ item["url"] )))

            except:
                pass
            detailUrlRule = item["url"]

            if '["url"]'.startswith('http'):
                if '{0}' in '["url"]':
                    detailQueryCondition = []
                    detailUrlRule = '["url"]'
                    i = 0
                    while i < len(detailQueryCondition):
                        detailUrlRule = detailUrlRule.replace('{' + str(i) + '}', str(detailQueryCondition[i]))
                        i += 1
            else:
                detailUrlRule =item["url"]

            detailUrlRule ='https://read.douban.com'+ detailUrlRule

            if detailUrlRule.startswith('http') or self.hostname in detailUrlRule:
                pass
            else:
                detailUrlRule = self.protocol + '://' + self.hostname + detailUrlRule
                fields["laiyuan"] = detailUrlRule
            yield scrapy.Request(url=detailUrlRule, meta={'fields': fields}, callback=self.detail_parse)

    # 詳情解析
    def detail_parse(self, response):
        fields = response.meta['fields']
        try:
            if '(.*?)' in '''span[itemprop="genre"]::text''':
                fields["genre"] = str( re.findall(r'''span[itemprop="genre"]::text''', response.text, re.S)[0].strip())

            else:
                if 'genre' != 'xiangqing' and 'genre' != 'detail' and 'genre' != 'pinglun' and 'genre' != 'zuofa':
                    fields["genre"] = str( self.remove_html(response.css('''span[itemprop="genre"]::text''').extract_first()))

                else:
                    try:
                        fields["genre"] = str( emoji.demojize(response.css('''span[itemprop="genre"]::text''').extract_first()))

                    except:
                        pass
        except:
            pass
        try:
            fields["chubanshe"] = str( response.xpath('''//span[text()="出版社"]/../span[@class="labeled-text"]/span[1]/text()''').extract()[0].strip())

        except:
            pass
        try:
            fields["cbsj"] = str( response.xpath('''//span[text()="出版社"]/../span[@class="labeled-text"]/span[2]/text()''').extract()[0].strip())

        except:
            pass
        try:
            if '(.*?)' in '''a[itemprop="provider"]::text''':
                fields["provider"] = str( re.findall(r'''a[itemprop="provider"]::text''', response.text, re.S)[0].strip())

            else:
                if 'provider' != 'xiangqing' and 'provider' != 'detail' and 'provider' != 'pinglun' and 'provider' != 'zuofa':
                    fields["provider"] = str( self.remove_html(response.css('''a[itemprop="provider"]::text''').extract_first()))

                else:
                    try:
                        fields["provider"] = str( emoji.demojize(response.css('''a[itemprop="provider"]::text''').extract_first()))

                    except:
                        pass
        except:
            pass
        try:
            if '(.*?)' in '''span.score::text''':
                fields["score"] = float( re.findall(r'''span.score::text''', response.text, re.S)[0].strip())
            else:
                if 'score' != 'xiangqing' and 'score' != 'detail' and 'score' != 'pinglun' and 'score' != 'zuofa':
                    fields["score"] = float( self.remove_html(response.css('''span.score::text''').extract_first()))
                else:
                    try:
                        fields["score"] = float( emoji.demojize(response.css('''span.score::text''').extract_first()))
                    except:
                        pass
        except:
            pass
        try:
            if '(.*?)' in '''span.amount::text''':
                fields["pingjiashu"] = int( re.findall(r'''span.amount::text''', response.text, re.S)[0].strip().replace('評(píng)價(jià)',''))
            else:
                if 'pingjiashu' != 'xiangqing' and 'pingjiashu' != 'detail' and 'pingjiashu' != 'pinglun' and 'pingjiashu' != 'zuofa':
                    fields["pingjiashu"] = int( self.remove_html(response.css('''span.amount::text''').extract_first()).replace('評(píng)價(jià)',''))
                else:
                    try:
                        fields["pingjiashu"] = int( emoji.demojize(response.css('''span.amount::text''').extract_first()).replace('評(píng)價(jià)',''))
                    except:
                        pass
        except:
            pass
        return fields

    # 數(shù)據(jù)清洗
    def pandas_filter(self):
        engine = create_engine('mysql+pymysql://root:123456@localhost/spider0n4b129m?charset=UTF8MB4')
        df = pd.read_sql('select * from dianzitushu limit 50', con = engine)

        # 重復(fù)數(shù)據(jù)過(guò)濾
        df.duplicated()
        df.drop_duplicates()

        #空數(shù)據(jù)過(guò)濾
        df.isnull()
        df.dropna()

        # 填充空數(shù)據(jù)
        df.fillna(value = '暫無(wú)')

        # 異常值過(guò)濾

        # 濾出 大于800 和 小于 100 的
        a = np.random.randint(0, 1000, size = 200)
        cond = (a<=800) & (a>=100)
        a[cond]

        # 過(guò)濾正態(tài)分布的異常值
        b = np.random.randn(100000)
        # 3σ過(guò)濾異常值少态,σ即是標(biāo)準(zhǔn)差
        cond = np.abs(b) > 3 * 1
        b[cond]

        # 正態(tài)分布數(shù)據(jù)
        df2 = pd.DataFrame(data = np.random.randn(10000,3))
        # 3σ過(guò)濾異常值,σ即是標(biāo)準(zhǔn)差
        cond = (df2 > 3*df2.std()).any(axis = 1)
        # 不滿?條件的?索引
        index = df2[cond].index
        # 根據(jù)?索引易遣,進(jìn)?數(shù)據(jù)刪除
        df2.drop(labels=index,axis = 0)

    # 去除多余html標(biāo)簽
    def remove_html(self, html):
        if html == None:
            return ''
        pattern = re.compile(r'<[^>]+>', re.S)
        return pattern.sub('', html).strip()

    # 數(shù)據(jù)庫(kù)連接
    def db_connect(self):
        type = self.settings.get('TYPE', 'mysql')
        host = self.settings.get('HOST', 'localhost')
        port = int(self.settings.get('PORT', 3306))
        user = self.settings.get('USER', 'root')
        password = self.settings.get('PASSWORD', '123456')

        try:
            database = self.databaseName
        except:
            database = self.settings.get('DATABASE', '')

        if type == 'mysql':
            connect = pymysql.connect(host=host, port=port, db=database, user=user, passwd=password, charset='utf8')
        else:
            connect = pymssql.connect(host=host, user=user, password=password, database=database)
        return connect

    # 斷表是否存在
    def table_exists(self, cursor, table_name):
        cursor.execute("show tables;")
        tables = [cursor.fetchall()]
        table_list = re.findall('(\'.*?\')',str(tables))
        table_list = [re.sub("'",'',each) for each in table_list]

        if table_name in table_list:
            return 1
        else:
            return 0

    # 數(shù)據(jù)緩存源
    def temp_data(self):

        connect = self.db_connect()
        cursor = connect.cursor()
        sql = '''
            insert into `dianzitushu`(
                id
                ,title
                ,picture
                ,salesprice
                ,wordcount
                ,author
                ,biaoqian
                ,detailurl
                ,genre
                ,chubanshe
                ,cbsj
                ,provider
                ,score
                ,pingjiashu
            )
            select
                id
                ,title
                ,picture
                ,salesprice
                ,wordcount
                ,author
                ,biaoqian
                ,detailurl
                ,genre
                ,chubanshe
                ,cbsj
                ,provider
                ,score
                ,pingjiashu
            from `0n4b129m_dianzitushu`
            where(not exists (select
                id
                ,title
                ,picture
                ,salesprice
                ,wordcount
                ,author
                ,biaoqian
                ,detailurl
                ,genre
                ,chubanshe
                ,cbsj
                ,provider
                ,score
                ,pingjiashu
            from `dianzitushu` where
                `dianzitushu`.id=`0n4b129m_dianzitushu`.id
            ))
            order by rand()
            limit 50;
        '''

        cursor.execute(sql)
        connect.commit()
        connect.close()

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末彼妻,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子豆茫,更是在濱河造成了極大的恐慌侨歉,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件揩魂,死亡現(xiàn)場(chǎng)離奇詭異幽邓,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)火脉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門牵舵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人倦挂,你說(shuō)我怎么就攤上這事畸颅。” “怎么了方援?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵没炒,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我犯戏,道長(zhǎng)窥浪,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任笛丙,我火速辦了婚禮漾脂,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘胚鸯。我一直安慰自己骨稿,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著坦冠,像睡著了一般形耗。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上辙浑,一...
    開(kāi)封第一講書(shū)人閱讀 49,760評(píng)論 1 289
  • 那天激涤,我揣著相機(jī)與錄音,去河邊找鬼判呕。 笑死倦踢,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的侠草。 我是一名探鬼主播辱挥,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼边涕!你這毒婦竟也來(lái)了晤碘?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤功蜓,失蹤者是張志新(化名)和其女友劉穎园爷,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體式撼,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡童社,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了端衰。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡甘改,死狀恐怖旅东,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情十艾,我是刑警寧澤抵代,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站忘嫉,受9級(jí)特大地震影響荤牍,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜庆冕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一康吵、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧访递,春花似錦晦嵌、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)旱函。三九已至,卻和暖如春描滔,著一層夾襖步出監(jiān)牢的瞬間棒妨,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工含长, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留券腔,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓茎芋,卻偏偏與公主長(zhǎng)得像颅眶,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子田弥,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

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