從零開始學python(十六)爬蟲集群部署

前言

今天講述Python框架源碼專題最后一個部分做入,爬蟲集群部署缭嫡,前面更新了十五個從零開始學python的系列文章,分別是
1.編程語法必修篇
2.網(wǎng)絡編程篇
3.多線程/多進程/協(xié)程篇
4.MySQL數(shù)據(jù)庫篇
5.Redis數(shù)據(jù)庫篇
6.MongoDB數(shù)據(jù)庫篇
7.機器學習篇
8.全棧開發(fā)篇
9.Numpy/pandas/matplotlib篇
10.Hadoop篇
11.Spark篇
12.爬蟲工程師篇
13.爬蟲工程師自動化和抓包篇
14.scrapy框架篇
15.feapder框架篇

本系列文根據(jù)以下學習路線展開講述:

從零開始學python到高級進階路線圖主頁

爬蟲集群部署

一丶scrapyd框架

1.環(huán)境部署

Scrapyd是一個基于Twisted的Python框架皆刺,用于部署和運行Scrapy爬蟲凌摄。它提供了一個Web服務羡蛾,可以通過API來管理Scrapy爬蟲的部署和運行。在Scrapyd中望伦,爬蟲可以被打包成一個egg文件煎殷,然后通過API上傳到Scrapyd服務器上進行部署和運行。

以下是Scrapyd框架環(huán)境部署的詳細步驟:

安裝Python和pip

Scrapyd是基于Python的框架劣摇,因此需要先安裝Python和pip弓乙。可以從Python官網(wǎng)下載Python安裝包暇韧,然后使用命令行安裝pip。

安裝Scrapy和Scrapyd

使用pip安裝Scrapy和Scrapyd:

pip install scrapy
pip install scrapyd

配置Scrapyd

Scrapyd的配置文件位于/etc/scrapyd/scrapyd.conf懈玻。可以使用以下命令來編輯配置文件:

sudo nano /etc/scrapyd/scrapyd.conf

在配置文件中艺栈,可以設置Scrapyd的端口號、日志文件路徑诅妹、爬蟲項目路徑等毅人。

啟動Scrapyd

使用以下命令啟動Scrapyd:

scrapyd

Scrapyd將會在默認端口6800上啟動⊙咚可以在瀏覽器中訪問http://localhost:6800/來查看Scrapyd的Web界面。

部署Scrapy爬蟲

將Scrapy爬蟲打包成一個egg文件般此,然后使用以下命令將其部署到Scrapyd服務器上:

curl -F project=myproject -F spider=myspider \
    -F eggfile=@myproject.egg \
    http://localhost:6800/schedule.json -o result.json

其中牵现,project和spider參數(shù)分別指定爬蟲所在的項目和爬蟲名稱,eggfile參數(shù)指定要上傳的egg文件路徑科乎,最后的URL是Scrapyd的API地址贼急。

查看爬蟲運行狀態(tài)

可以在Scrapyd的Web界面上查看爬蟲的運行狀態(tài)。也可以使用以下命令來查看爬蟲的運行日志:

curl http://localhost:6800/logs/myproject/myspider/001

其中太抓,myproject和myspider分別是爬蟲所在的項目和爬蟲名稱,001是爬蟲運行的任務ID碴倾。

以上就是Scrapyd框架環(huán)境部署的詳細步驟掉丽。

2.scrapyd API處理爬蟲

Scrapyd是一個用于部署和運行Scrapy爬蟲的Python框架,它提供了一個基于HTTP的API僧须,可以通過API管理和控制爬蟲的運行项炼。通過Scrapyd API柑蛇,你可以與Scrapyd服務器進行通信驱闷,發(fā)送指令來管理爬蟲的啟動、停止空另、查看爬蟲狀態(tài)等操作。

下面是對Scrapyd API處理爬蟲的詳細解釋:

安裝Scrapyd

首先摄杂,需要安裝Scrapyd框架循榆。可以使用pip命令進行安裝:pip install scrapyd

啟動Scrapyd服務器

使用命令scrapyd啟動Scrapyd服務器映挂。默認情況下盗尸,Scrapyd服務器將在6800端口上運行。

創(chuàng)建Scrapy爬蟲

在使用Scrapyd API之前泼各,需要先創(chuàng)建一個Scrapy爬蟲∧嫖。可以使用Scrapy命令行工具創(chuàng)建一個新的爬蟲項目莽使,并編寫爬蟲代碼。

部署爬蟲

在項目根目錄下運行命令scrapyd-deploy吮旅,將爬蟲部署到Scrapyd服務器上庇勃。這將會生成一個scrapy.cfg配置文件槽驶,并將項目上傳到Scrapyd服務器。

使用Scrapyd API

Scrapyd API提供了一系列接口用于管理爬蟲掂铐,包括啟動爬蟲揍异、停止爬蟲爆班、獲取爬蟲狀態(tài)等。

解析API響應

Scrapyd API的響應是JSON格式的數(shù)據(jù)×欧祝可以使用Python的requests庫或其他HTTP請求庫來發(fā)送API請求拗盒,并解析返回的JSON數(shù)據(jù)。

通過Scrapyd API陡蝇,你可以通過程序化的方式管理和控制Scrapy爬蟲的運行。這使得你可以方便地遠程啟動和監(jiān)控爬蟲任務广匙。

3.scrapyd多任務管理

在Scrapyd中恼策,多任務管理是指同時運行和管理多個Scrapy爬蟲任務的能力。Scrapyd提供了一組API和工具涣楷,可以輕松地管理多個爬蟲任務,包括啟動狮斗、停止碳褒、監(jiān)視任務狀態(tài)以及獲取任務結果等看疗。下面是對Scrapyd多任務管理的詳細解釋:

創(chuàng)建多個爬蟲項目

首先睦授,你需要創(chuàng)建多個獨立的Scrapy爬蟲項目。每個項目都在獨立的目錄中去枷,并具有自己的爬蟲代碼、配置文件和依賴項疗隶。

部署爬蟲項目

使用Scrapyd的部署工具(如scrapyd-deploy命令)將各個爬蟲項目部署到Scrapyd服務器上翼闹。確保你為每個項目指定唯一的項目名稱。

啟動多個任務

使用Scrapyd API的/schedule.json接口來啟動多個任務坚弱。你可以通過發(fā)送多個HTTP請求关摇,每個請求對應一個任務,來實現(xiàn)同時啟動多個任務输虱。在每個請求中宪睹,指定項目名稱和要啟動的爬蟲名稱。

監(jiān)視任務狀態(tài)

使用Scrapyd API的/listjobs.json接口來獲取當前運行中的任務列表及其狀態(tài)亭病。你可以周期性地發(fā)送API請求以獲取最新的任務狀態(tài)信息。根據(jù)任務狀態(tài)促煮,可以判斷任務是正在運行整袁、已完成還是出現(xiàn)錯誤。

獲取任務結果

當任務完成后泞当,可以使用Scrapyd API的/listjobs.json接口或/jobq/{job_id}/items.json接口來獲取任務的結果數(shù)據(jù)民珍。這些接口將返回爬蟲任務的輸出數(shù)據(jù),如爬取的數(shù)據(jù)項或日志信息嚷量。

停止任務

如果需要停止正在運行的任務蝶溶,可以使用Scrapyd API的/cancel.json接口。提供項目名稱和任務ID抖所,即可停止相應的任務。

通過Scrapyd的多任務管理能力暴匠,你可以同時運行和管理多個獨立的爬蟲任務傻粘。這使得你可以處理大規(guī)模的爬取任務,提高效率并降低管理成本窒典。

二丶gerapy部署爬蟲

1.gerapy環(huán)境搭建

Gerapy是一個基于Scrapy的分布式爬蟲管理框架稽莉,可以方便地管理多個Scrapy爬蟲,并提供了Web界面進行可視化操作污秆。下面是Gerapy環(huán)境搭建的詳細講解:

安裝Python

Gerapy是基于Python開發(fā)的混狠,因此需要先安裝Python〗龋可以從官網(wǎng)下載Python安裝包,也可以使用包管理工具進行安裝刮吧。

安裝Scrapy

Gerapy是基于Scrapy的掖蛤,因此需要先安裝Scrapy≈录ィ可以使用pip進行安裝:

pip install scrapy

安裝Gerapy

可以使用pip進行安裝:

pip install gerapy

安裝Redis

Gerapy使用Redis作為分布式任務隊列和數(shù)據(jù)存儲,因此需要先安裝Redis墓拜∏肫酰可以從官網(wǎng)下載Redis安裝包,也可以使用包管理工具進行安裝爽锥。

配置Gerapy
Gerapy的配置文件位于~/.gerapy/config.json,可以使用以下命令進行初始化:

gerapy init

然后編輯~/.gerapy/config.json文件贸辈,配置Redis和Gerapy的用戶名和密碼等信息肠槽。

啟動Gerapy
可以使用以下命令啟動Gerapy:

gerapy

然后在瀏覽器中訪問http://localhost:8000,輸入用戶名和密碼登錄Gerapy的Web界面嘴拢。

創(chuàng)建Scrapy項目

在Gerapy的Web界面中寂纪,可以創(chuàng)建Scrapy項目,并在項目中創(chuàng)建爬蟲孝冒。Gerapy會自動將爬蟲添加到任務隊列中拟杉,可以在Web界面中查看任務狀態(tài)和日志。

2.gerapy服務器部署

安裝Python和Scrapy

在服務器上安裝Python和Scrapy穴店,可以使用以下命令:

sudo apt-get update
sudo apt-get install python3 python3-pip
sudo pip3 install scrapy

安裝Gerapy

使用以下命令安裝Gerapy:

sudo pip3 install gerapy

初始化Gerapy

使用以下命令初始化Gerapy:

gerapy init

這將創(chuàng)建一個名為gerapy的文件夾拿穴,其中包含Gerapy的配置文件和其他必要文件。

配置Gerapy

在gerapy文件夾中球凰,打開config.py文件,配置Gerapy的相關參數(shù)呕诉,例如數(shù)據(jù)庫連接信息、管理員賬號等。

啟動Gerapy

使用以下命令啟動Gerapy:

gerapy runserver

這將啟動Gerapy的Web界面捶闸,可以在瀏覽器中訪問http://localhost:8000來管理爬蟲拖刃。

部署爬蟲

在Gerapy的Web界面中,可以添加兑牡、編輯和刪除爬蟲均函,并且可以在多臺服務器上部署爬蟲,實現(xiàn)分布式爬取苞也。

3.gerapy打包框架項目

Gerapy是一個基于Scrapy的分布式爬蟲管理框架如迟,可以方便地管理多個Scrapy爬蟲,并提供了Web界面進行操作和監(jiān)控殷勘。在實際項目中,我們可能需要將Gerapy打包成可執(zhí)行文件输拇,以便在其他機器上部署和運行贤斜。本文將介紹如何打包Gerapy框架項目。

安裝pyinstaller

pyinstaller是一個用于將Python代碼打包成可執(zhí)行文件的工具奴曙,可以通過pip進行安裝:

pip install pyinstaller

打包Gerapy

在Gerapy項目根目錄下執(zhí)行以下命令:

pyinstaller -F gerapy.spec

其中草讶,gerapy.spec是一個配置文件,用于指定打包的參數(shù)和選項坤溃。如果沒有該文件,可以通過以下命令生成:

pyinstaller --name=gerapy -y --clean --windowed --icon=gerapy.ico --add-data=gerapy.ico;. gerapy/__main__.py

該命令將生成一個名為gerapy的可執(zhí)行文件薪介,使用了以下參數(shù)和選項:

  • --name:指定生成的可執(zhí)行文件名為gerapy汁政;
  • -y:自動覆蓋已存在的輸出目錄;
  • --clean:在打包前清理輸出目錄记劈;
  • --windowed:生成窗口應用程序目木,不顯示命令行窗口;
  • --icon:指定應用程序圖標刽射;
  • --add-data:將gerapy.ico文件打包到可執(zhí)行文件中誓禁。

運行Gerapy

打包完成后,在dist目錄下會生成一個名為gerapy的可執(zhí)行文件现横。將該文件復制到其他機器上戒祠,即可在該機器上運行Gerapy框架項目。

三丶feapder部署

1.feapder應用場景和原理

Feapder是一個基于Python開發(fā)的輕量級分布式爬蟲框架姜盈,旨在提供簡單馏颂、易用且高效的爬蟲解決方案。它具有以下應用場景和原理:

應用場景:
  • 數(shù)據(jù)采集:Feapder可以用于從各種網(wǎng)站和數(shù)據(jù)源中采集數(shù)據(jù)救拉。無論是爬取結構化數(shù)據(jù)還是非結構化數(shù)據(jù)亿絮,F(xiàn)eapder都提供了豐富的功能和靈活的配置選項來滿足不同數(shù)據(jù)采集的需求麸拄。

  • 網(wǎng)站監(jiān)測:Feapder可以周期性地監(jiān)測網(wǎng)站內(nèi)容的變化黔姜,并及時提醒用戶。這在需要實時監(jiān)控目標網(wǎng)站的情況下非常有用淮椰,比如新聞更新纳寂、價格變動等。

  • 數(shù)據(jù)清洗和處理:Feapder支持自定義處理函數(shù)和管道來對爬取的數(shù)據(jù)進行清洗和處理黔牵。你可以使用Feapder提供的數(shù)據(jù)處理功能爷肝,比如去重陆错、編碼轉換音瓷、數(shù)據(jù)過濾等,將爬取的原始數(shù)據(jù)轉化為可用的結構化數(shù)據(jù)绳慎。

  • 數(shù)據(jù)存儲和導出:Feapder提供了多種數(shù)據(jù)存儲選項杏愤,包括數(shù)據(jù)庫存儲、文件存儲和消息隊列等珊楼。你可以根據(jù)需求選擇適合的存儲方式厕宗,并支持數(shù)據(jù)導出到各種格式,如CSV已慢、JSON等佑惠。

原理解析:

Feapder的核心原理是基于分布式的異步任務調(diào)度和處理厕鹃。以下是Feapder的原理解析:

  • 分布式架構:Feapder使用分布式架構來提高爬取效率和可擴展性乍丈。任務調(diào)度和數(shù)據(jù)處理分布在多個節(jié)點上,每個節(jié)點可以獨立運行爬蟲任務忆矛,并通過消息隊列進行通信和數(shù)據(jù)傳輸请垛。

  • 異步任務調(diào)度:Feapder使用異步任務調(diào)度框架(比如Celery)來實現(xiàn)任務的并發(fā)執(zhí)行。每個爬蟲任務都被封裝為一個可執(zhí)行的異步任務漫拭,可以獨立運行在任務調(diào)度器中混稽,并通過消息隊列接收和發(fā)送任務相關的消息。

  • 任務調(diào)度和監(jiān)控:Feapder提供了任務調(diào)度和監(jiān)控的功能礼旅,可以實時監(jiān)控任務的狀態(tài)洽洁、進度和錯誤信息。你可以通過Feapder的管理界面或API汰翠,對任務進行啟動昭雌、停止城豁、暫停和重新調(diào)度等操作,以及實時查看任務的日志和統(tǒng)計信息唱星。

  • 數(shù)據(jù)處理和存儲:Feapder支持自定義的數(shù)據(jù)處理函數(shù)和處理管道间聊,可以對爬取的數(shù)據(jù)進行清洗、轉換和處理哎榴。同時,F(xiàn)eapder提供了多種數(shù)據(jù)存儲選項迎变,可以將處理后的數(shù)據(jù)存儲到數(shù)據(jù)庫衣形、文件系統(tǒng)或消息隊列中,并支持數(shù)據(jù)導出和導入谆吴。

總結來說句狼,F(xiàn)eapder通過分布式異步任務調(diào)度和處理的方式,實現(xiàn)了高效胳螟、靈活和可擴展的爬蟲框架芜繁。它的設計使得用戶可以簡單地配置和管理爬蟲任務绒极,并方便地進行數(shù)據(jù)處理和存儲。無論是小規(guī)模的數(shù)據(jù)采集還是大規(guī)模的分布式爬蟲任務榔袋,F(xiàn)eapder都是一個強大的選擇铡俐。

2.feapder鏡像拉取

feapder是一個基于Python的分布式爬蟲框架,它可以幫助用戶快速構建高效吏够、穩(wěn)定的爬蟲系統(tǒng)滩报。在使用feapder之前,需要先拉取feapder的鏡像售睹。

鏡像拉取命令如下

docker pull feapder/feapder

這個命令會從Docker Hub上拉取feapder的最新版本鏡像可训。拉取完成后,可以使用以下命令查看已經(jīng)拉取的鏡像:

docker images

feapder的鏡像包含了所有需要的依賴和配置飞崖,可以直接使用固歪。在使用feapder時,可以通過Docker運行feapder鏡像昼牛,也可以將鏡像部署到Kubernetes集群中贰健。

使用Docker運行feapder鏡像的命令如下:

docker run -it --name feapder feapder/feapder

這個命令會在Docker容器中啟動feapder,并進入容器的交互式終端辜伟。在容器中可以使用feapder提供的命令行工具來創(chuàng)建脊另、管理爬蟲任務。

總之旱捧,feapder的鏡像拉取非常簡單踩麦,只需要執(zhí)行一條命令即可。同時贫橙,feapder的鏡像也非常方便使用反粥,可以直接在Docker容器中運行,也可以部署到Kubernetes集群中莫湘。

3.docker部署feapder部署環(huán)境

feapder是一個基于Python的分布式爬蟲框架娜膘,可以用于快速開發(fā)各種類型的爬蟲竣贪。在使用feapder時巩螃,可以選擇使用docker進行部署匕争,以便更方便地管理和部署爬蟲。

以下是使用docker部署feapder的詳細步驟:

安裝docker和docker-compose

在開始之前拍皮,需要先安裝docker和docker-compose跑杭。可以參考官方文檔進行安裝爹橱。

拉取feapder鏡像

可以使用以下命令從Docker Hub上拉取feapder鏡像:

docker pull feapder/feapder

創(chuàng)建docker-compose.yml文件

在本地創(chuàng)建一個docker-compose.yml文件愧驱,用于定義feapder的容器和相關配置椭盏。以下是一個示例文件:

version: '3'

services:
  redis:
    image: redis:latest
    ports:
      - "6379:6379"
    volumes:
      - ./redis-data:/data

  mysql:
    image: mysql:latest
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: feapder
    ports:
      - "3306:3306"
    volumes:
      - ./mysql-data:/var/lib/mysql

  feapder:
    image: feapder/feapder
    environment:
      - REDIS_HOST=redis
      - MYSQL_HOST=mysql
      - MYSQL_USER=root
      - MYSQL_PASSWORD=root
      - MYSQL_DATABASE=feapder
    volumes:
      - ./feapder-data:/app/data
    depends_on:
      - redis
      - mysql

在這個文件中,定義了三個服務:redis糟红、mysql和feapder改化。其中枉昏,redis和mysql分別用于存儲爬蟲的任務隊列和數(shù)據(jù)兄裂,feapder則是爬蟲的運行環(huán)境阳藻。

啟動容器

在本地的項目目錄下,運行以下命令啟動容器:

docker-compose up -d
這個命令會啟動所有定義在docker-compose.yml文件中的服務匾南,并在后臺運行蛔外。

進入feapder容器

可以使用以下命令進入feapder容器:

docker exec -it feapder_feapder_1 /bin/bash

其中,feapder_feapder_1是容器的名稱豹爹,可以使用docker ps命令查看。

運行爬蟲

在feapder容器中臂聋,可以使用feapder命令來運行爬蟲。例如艾君,可以使用以下命令運行一個簡單的爬蟲:

feapder run spider demo

這個命令會運行名為demo的爬蟲肄方。

以上就是使用docker部署feapder的詳細步驟扒秸。通過使用docker,可以更方便地管理和部署feapder爬蟲写烤。

4.feapder部署scrapy項目

Feapder是基于Scrapy框架開發(fā)的分布式爬蟲框架拾徙,因此部署Feapder項目也需要先部署Scrapy項目。下面是部署Scrapy項目的詳細步驟:

1. 創(chuàng)建Scrapy項目

使用Scrapy命令行工具創(chuàng)建一個新的Scrapy項目暂衡,例如:

scrapy startproject myproject

2. 編寫Spider

在Scrapy項目中崖瞭,Spider是爬蟲的核心部分书聚,負責定義如何抓取網(wǎng)站的數(shù)據(jù)。在Scrapy項目中斩个,Spider通常是一個Python類驯杜,需要繼承Scrapy提供的Spider類,并實現(xiàn)一些必要的方法滚局。

例如,下面是一個簡單的Spider示例:

import scrapy

class MySpider(scrapy.Spider):
    name = 'myspider'
    start_urls = ['http://www.example.com']

    def parse(self, response):
        # 解析網(wǎng)頁內(nèi)容
        pass

3. 配置Scrapy項目

Scrapy項目的配置文件是settings.py膝但,其中包含了一些Scrapy的配置選項谤草,例如爬蟲的User-Agent丑孩、下載延遲等等。在配置文件中温学,還可以設置Scrapy使用的中間件仗岖、管道等等。

例如揽祥,下面是一個簡單的配置文件示例:

BOT_NAME = 'myproject'

SPIDER_MODULES = ['myproject.spiders']
NEWSPIDER_MODULE = 'myproject.spiders'

USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'

DOWNLOAD_DELAY = 3

ITEM_PIPELINES = {
    'myproject.pipelines.MyPipeline': 300,
}

4. 運行Spider

使用Scrapy命令行工具運行Spider檩电,例如:

scrapy crawl myspider

以上就是部署Scrapy項目的詳細步驟。在部署Feapder項目時料按,可以將Scrapy項目作為Feapder的一個子項目载矿,然后在Feapder中調(diào)用Scrapy項目的Spider來完成具體的爬取任務丽柿。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末甫题,一起剝皮案震驚了整個濱河市涂召,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌炎码,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異歉闰,居然都是意外死亡和敬,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進店門啤它,熙熙樓的掌柜王于貴愁眉苦臉地迎上來变骡,“玉大人芭逝,你說我怎么就攤上這事√艿” “怎么了瓢捉?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵泡态,是天一觀的道長搂漠。 經(jīng)常有香客問我,道長某弦,這世上最難降的妖魔是什么桐汤? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任灯荧,我火速辦了婚禮索昂,結果婚禮上,老公的妹妹穿的比我還像新娘促王。我一直安慰自己腾降,他們只是感情好拣度,可當我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著抗果,像睡著了一般筋帖。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上冤馏,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天日麸,我揣著相機與錄音,去河邊找鬼逮光。 笑死代箭,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的睦霎。 我是一名探鬼主播梢卸,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼副女!你這毒婦竟也來了蛤高?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤碑幅,失蹤者是張志新(化名)和其女友劉穎戴陡,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體沟涨,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡恤批,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了裹赴。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片喜庞。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖棋返,靈堂內(nèi)的尸體忽然破棺而出延都,到底是詐尸還是另有隱情,我是刑警寧澤睛竣,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布晰房,位于F島的核電站,受9級特大地震影響射沟,放射性物質發(fā)生泄漏殊者。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一验夯、第九天 我趴在偏房一處隱蔽的房頂上張望猖吴。 院中可真熱鬧,春花似錦簿姨、人聲如沸距误。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽准潭。三九已至,卻和暖如春域仇,著一層夾襖步出監(jiān)牢的瞬間刑然,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工暇务, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留泼掠,地道東北人。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓垦细,卻偏偏與公主長得像择镇,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子括改,可洞房花燭夜當晚...
    茶點故事閱讀 42,802評論 2 345

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