爬蟲工程師是干什么的?

本文轉(zhuǎn)載自CSDN博客:https://blog.csdn.net/fei2636/article/details/78999318?

程序員有時(shí)候很難和外行人講明白自己的工作是什么刀闷,甚至有些時(shí)候部默,跟同行的人講清楚“你是干什么的”也很困難。所以我打算寫一篇博客撇贺,講一下“爬蟲工程師”的工作內(nèi)容是什么巡莹,需要掌握哪些技能司志,難點(diǎn)和好玩的地方等等,講到哪里算哪里吧降宅。

一骂远、爬蟲工程師是干嘛的?

1.主要工作內(nèi)容腰根?

互聯(lián)網(wǎng)是由一個(gè)一個(gè)的超鏈接組成的激才,從一個(gè)網(wǎng)頁的鏈接可以跳到另一個(gè)網(wǎng)頁,在新的網(wǎng)頁里额嘿,又有很多鏈接瘸恼。理論上講,從任何一個(gè)網(wǎng)頁開始册养,不斷點(diǎn)開鏈接东帅、鏈接的網(wǎng)頁的鏈接,就可以走遍整個(gè)互聯(lián)網(wǎng)球拦!這個(gè)過程是不是像蜘蛛沿著網(wǎng)一樣爬靠闭?這也是“爬蟲”名字的由來。

作為爬蟲工程師坎炼,就是要寫出一些能夠沿著網(wǎng)爬的”蜘蛛“程序愧膀,保存下來獲得的信息。一般來說点弯,需要爬出來的信息都是結(jié)構(gòu)化的扇调,如果不是結(jié)構(gòu)化的矿咕,那么也就沒什么意義了(百分之八十的數(shù)據(jù)是非結(jié)構(gòu)化的)抢肛。爬蟲的規(guī)睦桥ィ可達(dá)可小,小到可以爬取豆瓣的top 250電影捡絮,定時(shí)爬取一個(gè)星期的天氣預(yù)報(bào)等熬芜。大到可以爬取整個(gè)互聯(lián)網(wǎng)的網(wǎng)頁(例如google)。下面這些福稳,我認(rèn)為都可以叫做爬蟲:

  1. 爬知乎的作者和回答
  2. 爬百度網(wǎng)盤的資源涎拉,存到數(shù)據(jù)庫(kù)中(當(dāng)然,只是保存資源的鏈接和標(biāo)題)的圆,然后制作一個(gè)網(wǎng)盤的搜索引擎
  3. 同上鼓拧,種子網(wǎng)站的搜索引擎也是這樣的

到這里,我們知道爬蟲的任務(wù)是獲取數(shù)據(jù)≡铰瑁現(xiàn)在比較流行大數(shù)據(jù)季俩,從互聯(lián)網(wǎng)方面講,數(shù)據(jù)可以分成兩種梅掠,一種是用戶產(chǎn)生的(UGC)酌住,第二種就是通過一些手段獲得的,通常就是爬蟲阎抒。爬蟲又不僅僅局限于從網(wǎng)頁中獲得數(shù)據(jù)酪我,也可以從app抓包等。簡(jiǎn)而言之且叁,就是聚合數(shù)據(jù)并讓他們結(jié)構(gòu)化都哭。那么,哪些工作需要爬蟲呢逞带?

2.爬蟲能做什么质涛?

典型的數(shù)據(jù)聚合類的網(wǎng)站都需要爬蟲。比如Google搜索引擎掰担。Google能在幾毫秒之內(nèi)提供給你包含某些關(guān)鍵字的頁面汇陆,肯定不是實(shí)時(shí)給你去找網(wǎng)頁的,而是提前抓好带饱,保存在他們自己的數(shù)據(jù)庫(kù)里(那他們的數(shù)據(jù)庫(kù)得多大呀)毡代。所以種子搜索引擎,網(wǎng)盤搜索引擎勺疼,Resillio key引擎等都是用爬蟲實(shí)現(xiàn)抓好數(shù)據(jù)放在數(shù)據(jù)庫(kù)里的教寂。

另外有一些提供信息對(duì)比的網(wǎng)站,比如比價(jià)類的網(wǎng)站执庐,就是通過爬蟲抓取不同購(gòu)物網(wǎng)站商品的價(jià)格酪耕,然后將各個(gè)購(gòu)物網(wǎng)站的價(jià)格展示在網(wǎng)站上。購(gòu)物網(wǎng)站的價(jià)格時(shí)時(shí)都在變轨淌,但是比價(jià)網(wǎng)站抓到的數(shù)據(jù)不會(huì)刪除迂烁,所以可以提供價(jià)格走勢(shì)看尼,這是購(gòu)物網(wǎng)站不會(huì)提供的信息。

除此之外盟步,個(gè)人還可以用爬蟲做一些好玩的事情藏斩。比如我們想看大量的圖片,可以寫一個(gè)爬蟲批量下載下來却盘,不必一個(gè)一個(gè)點(diǎn)擊保存狰域,還要忍受網(wǎng)站的廣告了;比如我們想備份自己的資料黄橘,例如保存下來我們?cè)诙拱臧l(fā)布過的所有的廣播兆览,可以使用爬蟲將自己發(fā)布的內(nèi)容全部抓下來,這樣即使一些網(wǎng)站沒有提供備份服務(wù)塞关,我們也可以自己豐衣足食拓颓。

二、爬蟲工程師需要掌握哪些技能描孟?

我見過這樣的說法:“爬蟲是低級(jí)驶睦、重復(fù)性很多的工作,沒有發(fā)展前途”匿醒。這是誤解场航。首先,對(duì)于程序員來說基本上不存在重復(fù)性的工作廉羔,任何重復(fù)勞動(dòng)都可以通過程序自動(dòng)解決溉痢。例如博主之前要抓十幾個(gè)相似度很高但是html結(jié)構(gòu)不太一樣的網(wǎng)站,我就寫了一個(gè)簡(jiǎn)單的代碼生成器憋他,從爬蟲代碼到單元測(cè)試代碼都可以自動(dòng)生成孩饼,只要對(duì)應(yīng)html結(jié)構(gòu)稍微修改一下就行了。所以我認(rèn)為竹挡,重復(fù)性的勞動(dòng)在編程方面來說基本上是不存在的镀娶,如果你認(rèn)為自己做的工作是重復(fù)性的,說明你比較勤快揪罕,不愿意去偷懶梯码。而我還認(rèn)為,勤快的程序員不是好程序員好啰。下面我根據(jù)自己這段時(shí)間的工作經(jīng)歷轩娶,講一講爬蟲需要哪些相關(guān)的技能。

1.基本的編碼基礎(chǔ)(至少一門編程語言)

這個(gè)對(duì)于任何編程工作來說都是必須的框往■悖基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu)你得會(huì)吧。數(shù)據(jù)名字和值得對(duì)應(yīng)(字典),對(duì)一些url進(jìn)行處理(列表)等等许溅。事實(shí)上瓤鼻,掌握的越牢固越好,爬蟲并不是一個(gè)簡(jiǎn)單的工作闹司,也并不比其他工作對(duì)編程語言的要求更高。熟悉你用的編程語言沐飘,熟悉相關(guān)的框架和庫(kù)永遠(yuǎn)是百益無害游桩。

我主要用Python,用Java寫爬蟲的也有耐朴,理論上講任何語言都可以寫爬蟲的借卧,不過最好選擇一門相關(guān)的庫(kù)多,開發(fā)迅速的語言筛峭。用C語言寫肯定是自找苦吃了铐刘。

2.任務(wù)隊(duì)列

當(dāng)爬蟲任務(wù)很大的時(shí)候,寫一個(gè)程序跑下來是不合適的:

  1. 如果中間遇到錯(cuò)誤停掉影晓,重頭再來镰吵?這不科學(xué)
  2. 我怎么知道程序在哪里失敗了?任務(wù)和任務(wù)之間不應(yīng)該相互影響
  3. 如果我有兩臺(tái)機(jī)器怎么分工挂签?

所以我們需要一種任務(wù)隊(duì)列疤祭,它的作用是:講計(jì)劃抓取的網(wǎng)頁都放到任務(wù)隊(duì)列里面去。然后worker從隊(duì)列中拿出來一個(gè)一個(gè)執(zhí)行饵婆,如果一個(gè)失敗勺馆,記錄一下,然后執(zhí)行下一個(gè)侨核。這樣草穆,worker就可以一個(gè)接一個(gè)地執(zhí)行下去。也增加了擴(kuò)展性搓译,幾億個(gè)任務(wù)放在隊(duì)列里也沒問題悲柱,有需要可以增加worker,就像多一雙虧筷子吃飯一樣些己。

常用的任務(wù)隊(duì)列有kafka诗祸,beanstalkdcelery等轴总。

3.數(shù)據(jù)庫(kù)

這個(gè)不用講了直颅,數(shù)據(jù)保存肯定要會(huì)數(shù)據(jù)庫(kù)的。不過有時(shí)候一些小數(shù)據(jù)也可以保存成json或者csv等怀樟。我有時(shí)想抓一些圖片就直接按照文件夾保存文件功偿。

推薦使用NoSQL的數(shù)據(jù)庫(kù),比如mongodb,因?yàn)榕老x抓到的數(shù)據(jù)一般是都字段-值得對(duì)應(yīng)械荷,有些字段有的網(wǎng)站有有的網(wǎng)站沒有共耍,mongo在這方面比較靈活,況且爬蟲爬到的數(shù)據(jù)關(guān)系非常非常弱吨瞎,很少會(huì)用到表與表的關(guān)系痹兜。

4.HTTP知識(shí)

HTTP知識(shí)是必備技能。因?yàn)橐赖氖蔷W(wǎng)頁颤诀,所以必須要了解網(wǎng)頁啊字旭。

首先html文檔的解析方法要懂,比如子節(jié)點(diǎn)父節(jié)點(diǎn)崖叫,屬性這些遗淳。我們看到的網(wǎng)頁是五彩斑斕的,只不過是被瀏覽器處理了而已心傀,原始的網(wǎng)頁是由很多標(biāo)簽組成的屈暗。處理最好使用html的解析器,如果自己用正則匹配的話坑會(huì)很多脂男。我個(gè)人非常喜歡xpath养叛,跨語言,表達(dá)比價(jià)好宰翅,但是也有缺點(diǎn)一铅,正則、邏輯判斷有點(diǎn)別扭堕油。

HTTP協(xié)議要理解潘飘。HTTP協(xié)議本身是無狀態(tài)的,那么“登錄”是怎么實(shí)現(xiàn)的掉缺?這就要求去了解一下session和cookies了卜录。GET方法和POST方法的區(qū)別(事實(shí)上除了字面意思不一樣沒有任何區(qū)別)。

瀏覽器要熟練眶明。爬蟲的過程其實(shí)是模擬人類去瀏覽器數(shù)據(jù)的過程艰毒。所以瀏覽器是怎么訪問一個(gè)網(wǎng)站的,你要學(xué)會(huì)去觀察搜囱,怎么觀察呢丑瞧?Developer Tools!Chrome的Developer Tools提供了訪問網(wǎng)站的一切信息蜀肘。從traffic可以看到所有發(fā)出去的請(qǐng)求绊汹。copy as curl功能可以給你生成和瀏覽器請(qǐng)求完全一致的curl請(qǐng)求!我寫一個(gè)爬蟲的一般流程是這樣的扮宠,先用瀏覽器訪問西乖,然后copy as curl看看有哪些header,cookies,然后用代碼模擬出來這個(gè)請(qǐng)求获雕,最后處理請(qǐng)求的結(jié)果保存下來薄腻。

5.運(yùn)維

這個(gè)話題要說的有很多,實(shí)際工作中運(yùn)維和開發(fā)的時(shí)間差不多甚至更多一些届案。維護(hù)已經(jīng)在工作的爬蟲是一個(gè)繁重的工作庵楷。隨著工作時(shí)間增加,一般我們都會(huì)學(xué)著讓寫出來的爬蟲更好維護(hù)一些楣颠。比如爬蟲的日志系統(tǒng)尽纽,數(shù)據(jù)量的統(tǒng)計(jì)等。將爬蟲工程師和運(yùn)維分開也不太合理球碉,因?yàn)槿绻粋€(gè)爬蟲不工作了蜓斧,那原因可能是要抓的網(wǎng)頁更新了結(jié)構(gòu)仓蛆,也有可能出現(xiàn)在系統(tǒng)上睁冬,也有可能是當(dāng)初開發(fā)爬蟲的時(shí)候沒發(fā)現(xiàn)反扒策略,上線之后出問題了看疙,也可能是對(duì)方網(wǎng)站發(fā)現(xiàn)了你是爬蟲把你封殺了豆拨,所以一般來說開發(fā)爬蟲要兼顧運(yùn)維。

所以爬蟲的運(yùn)維我可以提供下面幾個(gè)思路:

首先能庆,從數(shù)據(jù)增量監(jiān)控施禾。定向爬蟲(指的是只針對(duì)一個(gè)網(wǎng)站的爬蟲)比較容易,一段時(shí)間之后對(duì)一些網(wǎng)站的數(shù)據(jù)增量會(huì)有一個(gè)大體的了解搁胆。經(jīng)趁指悖看看這些數(shù)據(jù)的增加趨勢(shì)是否是正常就可以了(Grafana)。非定向爬蟲的數(shù)據(jù)增量不是很穩(wěn)定渠旁,一般看機(jī)器的網(wǎng)絡(luò)狀況攀例,網(wǎng)站的更新情況等(這方面我的經(jīng)驗(yàn)不多)。

然后看爬蟲執(zhí)行的成功情況顾腊。在上面提到了用任務(wù)隊(duì)列控制爬蟲工作粤铭,這樣解耦可以帶來很多好處,其中一個(gè)就是可以就是可以對(duì)一次爬蟲執(zhí)行進(jìn)行日志杂靶“鸸撸可以在每次爬蟲任務(wù)執(zhí)行的時(shí)候,將執(zhí)行的時(shí)間吗垮、狀態(tài)垛吗、目標(biāo)url、異常等放入一個(gè)日志系統(tǒng)(比如kibana)烁登,然后通過一個(gè)可視化的手段可以清晰地看到爬蟲的失敗率职烧。

爬蟲拋出的Exception。幾乎所有的項(xiàng)目都會(huì)用到錯(cuò)誤日志收集(Sentry),這里需要注意的一點(diǎn)是蚀之,忽略正常的異常(比如Connection錯(cuò)誤蝗敢,鎖沖突等),否則的話你會(huì)被這些錯(cuò)誤淹沒足删。

三寿谴、爬蟲與反爬

這同樣是很深的一個(gè)話題,就像攻擊武器與防御武器一樣失受,雙方總是在不斷升級(jí)讶泰。常見的反爬措施(我遇到過的)有下面幾種:

1.訪問頻率

很好理解,如果訪問太頻繁網(wǎng)站可能針對(duì)你的ip封鎖一段時(shí)間拂到,這和防DDoS的原理一樣痪署。對(duì)于爬蟲來說,碰到這樣的限制一下任務(wù)的頻率就可以了兄旬,可以盡量讓爬蟲想人類一樣訪問網(wǎng)頁(比如隨機(jī)sleep一段時(shí)間狼犯,如果每隔3s訪問一次網(wǎng)站很顯然不是正常人的行為)。

2.登錄限制

也比較常見领铐。不過公開信息的網(wǎng)站一般不會(huì)有這個(gè)限制悯森,這樣讓用戶也麻煩了。其實(shí)反爬措施都或多或少的影響真實(shí)用戶绪撵,反爬越嚴(yán)格瓢姻,誤殺用戶的可能性也越高。對(duì)爬蟲來說音诈,登錄同樣可以通過模擬登錄的方式解決幻碱,加個(gè)cookie就行了(話又說回來,網(wǎng)絡(luò)的原理很重要)细溅。

3.通過Header封殺

一般瀏覽器訪問網(wǎng)站會(huì)有header褥傍,比如Safari或者Chrome等等,還有操作系統(tǒng)信息谒兄。如果使用程序訪問并不會(huì)有這樣的header摔桦。破解也很簡(jiǎn)單,訪問的時(shí)候加上header就行承疲。

4.JavaScript腳本動(dòng)態(tài)獲取網(wǎng)站數(shù)據(jù)

有一些網(wǎng)站(尤其是單頁面網(wǎng)站)的內(nèi)容并不是通過服務(wù)器直接返回的邻耕,而是服務(wù)器只返回一個(gè)客戶端JavaScript程序,然后JavaScript獲取內(nèi)容燕鸽。更高級(jí)的是兄世,JavaScript在本地計(jì)算一個(gè)token,然后拿這個(gè)token來進(jìn)行AJAX獲取內(nèi)容啊研。而本地的JavaScript又是經(jīng)過代碼混淆和加密的御滩,這樣我們做爬蟲的通過看源代碼幾乎不可能模擬出來這個(gè)請(qǐng)求(主要是token不可能破解)鸥拧,但是我們可以從另一個(gè)角度:headless的瀏覽器,也就是我們直接運(yùn)行這個(gè)客戶端程序削解,這可以100%地模擬真實(shí)用戶富弦!

5.驗(yàn)證碼

這幾乎是終極武器了,驗(yàn)證碼是專門用來區(qū)分人和計(jì)算機(jī)的手段氛驮。對(duì)于反爬方來說腕柜,這種方式對(duì)真實(shí)用戶和搜索引擎(其實(shí)可以通過記錄搜索引擎爬蟲的ip來區(qū)別對(duì)待,可以解決)的危害比較大矫废,相信讀者都有輸入驗(yàn)證碼的痛苦經(jīng)歷盏缤。但這種方法也并不是無敵的!通過現(xiàn)在很火的機(jī)器學(xué)習(xí)可以輕松的識(shí)別大部分的驗(yàn)證碼蓖扑!Google的reCAPTCHA是一種非常高級(jí)的驗(yàn)證碼唉铜,但是聽說通過模擬瀏覽器也是可以破解的。

6.ip限制

網(wǎng)站可能將識(shí)別的ip永久封殺律杠,這種方式需要的人力比較大潭流,而且誤傷用戶的代價(jià)也很高。但是破解辦法卻非常簡(jiǎn)單俩功。目前代理池幾乎是搞爬蟲的標(biāo)配了幻枉,甚至還有很多高匿代理等好用的東西碰声。所以這基本上只能殺殺小爬蟲诡蜓。

7.網(wǎng)站內(nèi)容反爬

有一些網(wǎng)站將網(wǎng)站內(nèi)容用只有人類可以接收的形式來呈現(xiàn)(其實(shí)反爬就是區(qū)別對(duì)待人類和機(jī)器嘛)。比如將內(nèi)容用圖片的形式顯示胰挑。但是近幾年來人類和機(jī)器的差別越來越小蔓罚,圖片可以用OCR準(zhǔn)確率非常高地去識(shí)別。

反爬總結(jié)

爬蟲和反爬是典型的攻防雙方的互相升級(jí)瞻颂。但是我認(rèn)為豺谈,這種升級(jí)不像軍事,軍事是無盡頭的贡这,但是爬蟲和反爬是有盡頭的茬末。

爬蟲的盡頭就是瀏覽器,一旦使用瀏覽器盖矫,程序完全可以模擬真實(shí)用戶發(fā)出請(qǐng)求丽惭,缺點(diǎn)是就是消耗資源,因?yàn)樾枰麻_一個(gè)進(jìn)程辈双,解析DOM责掏,運(yùn)行客戶端JavaScript代碼。(chrome的node api在github開源僅僅兩天湃望,就拿到8k個(gè)star)

反爬的盡頭就是像Google這種超級(jí)厲害的驗(yàn)證碼换衬,畢竟驗(yàn)證碼的根本目的就是識(shí)別人類和機(jī)器的痰驱。

我正好有一個(gè)反爬做的非常好的例子。Google Arts Project項(xiàng)目是一個(gè)匯聚世界名畫的藝術(shù)長(zhǎng)廊瞳浦,我比較喜歡里面的一些畫担映,所以想下載一些(當(dāng)然這是不對(duì)的),然后發(fā)現(xiàn)這個(gè)網(wǎng)站反爬做的相當(dāng)好(因?yàn)榘鏅?quán)屬于收藏作品的博物館叫潦,所以Google Arts Project肯定不會(huì)提供下載)另萤,要下載幾乎是不可能的。我有點(diǎn)不服诅挑,開始用各種手段試圖下載原圖四敞。嘗試了一番,發(fā)現(xiàn)這個(gè)網(wǎng)站block掉了鼠標(biāo)右鍵功能拔妥、審查元素發(fā)現(xiàn)圖片并不是一個(gè)常規(guī)的圖片忿危、追蹤網(wǎng)絡(luò)包發(fā)現(xiàn)原圖竟然不是一次網(wǎng)絡(luò)請(qǐng)求拿到的,而是分成了好幾次請(qǐng)求base64編碼的字符流每次請(qǐng)求圖片的一部分没龙,然后在客戶端組裝起來圖片铺厨!當(dāng)然在客戶端的代碼也是經(jīng)過加密和混淆的!這完全可以作為反爬的教科書了硬纤,既沒有誤傷用戶解滓,又讓爬蟲無法下手。

圖片每次只請(qǐng)求部分

四筝家、職業(yè)道德

成規(guī)模的爬蟲一般都會(huì)使用集群洼裤,一般的小網(wǎng)站服務(wù)器規(guī)模可能不如爬蟲集群的規(guī)模大溪王。所以很多時(shí)候我們最好對(duì)要爬的網(wǎng)站限制一下頻率腮鞍。否則這些爬蟲就相當(dāng)于DoS攻擊集群了!一般的網(wǎng)站都會(huì)有robots.txt可以參考莹菱。

好了移国,總結(jié)來說,寫爬蟲需要經(jīng)驗(yàn)積累道伟,需要靈活的思路迹缀。比如說我之前就遇到過網(wǎng)站,需要驗(yàn)證碼驗(yàn)證拿到一個(gè)token蜜徽,可是通過看網(wǎng)絡(luò)請(qǐng)求發(fā)現(xiàn)這個(gè)token長(zhǎng)得很像一個(gè)時(shí)間戳祝懂,然后本地自己生成一個(gè)時(shí)間戳發(fā)現(xiàn)也是能用的!于是就這樣繞過了驗(yàn)證碼娜汁。所以多多積累和嘗試嫂易,可以偷不少懶,嘿嘿掐禁。

另外爬蟲也不是和我之前想的那樣是一個(gè)枯燥無味的工作怜械,比如我就發(fā)現(xiàn)了不少很垃圾颅和,很搞笑的網(wǎng)站,樂趣也蠻多的缕允。學(xué)到的東西也不少峡扩。萬變不離其宗嘛。

五障本、工作內(nèi)容

互聯(lián)網(wǎng)時(shí)代信息無處不在教届,我們?nèi)粘K佑|的大量信息例如微博、社交媒體網(wǎng)站的帖子驾霜、消費(fèi)者點(diǎn)評(píng)案训、新聞、銷售人員的拜訪記錄粪糙,這些都是常見的非結(jié)構(gòu)化數(shù)據(jù)來源强霎。非結(jié)構(gòu)化數(shù)據(jù)分析能夠揭示潛藏在文本當(dāng)中的趨勢(shì)和關(guān)聯(lián),為商業(yè)決策蓉冈、研究行業(yè)趨勢(shì)和熱點(diǎn)內(nèi)容分析提供有力支持城舞。

緯橫團(tuán)隊(duì)致力于打造最出色的中文語義分析技術(shù),通過自主研發(fā)的中文分詞寞酿、句法分析家夺、搜素引擎和實(shí)體識(shí)別技術(shù),結(jié)合海量行業(yè)語料的不斷積累伐弹,為企業(yè)客戶(營(yíng)銷拉馋、公關(guān)、客服掸茅、銷售和產(chǎn)品部門)椅邓、研究機(jī)構(gòu)和政府部門等提供數(shù)據(jù)監(jiān)測(cè)和采集柠逞、分析和可視化以及專業(yè)服務(wù)昧狮,增強(qiáng)用戶在大數(shù)據(jù)時(shí)代的競(jìng)爭(zhēng)力。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末板壮,一起剝皮案震驚了整個(gè)濱河市逗鸣,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌绰精,老刑警劉巖撒璧,帶你破解...
    沈念sama閱讀 222,807評(píng)論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異笨使,居然都是意外死亡卿樱,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門硫椰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來繁调,“玉大人萨蚕,你說我怎么就攤上這事√阋龋” “怎么了岳遥?”我有些...
    開封第一講書人閱讀 169,589評(píng)論 0 363
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)裕寨。 經(jīng)常有香客問我浩蓉,道長(zhǎng),這世上最難降的妖魔是什么宾袜? 我笑而不...
    開封第一講書人閱讀 60,188評(píng)論 1 300
  • 正文 為了忘掉前任捻艳,我火速辦了婚禮,結(jié)果婚禮上庆猫,老公的妹妹穿的比我還像新娘讯泣。我一直安慰自己,他們只是感情好阅悍,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,185評(píng)論 6 398
  • 文/花漫 我一把揭開白布好渠。 她就那樣靜靜地躺著,像睡著了一般节视。 火紅的嫁衣襯著肌膚如雪拳锚。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,785評(píng)論 1 314
  • 那天寻行,我揣著相機(jī)與錄音霍掺,去河邊找鬼。 笑死拌蜘,一個(gè)胖子當(dāng)著我的面吹牛杆烁,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播简卧,決...
    沈念sama閱讀 41,220評(píng)論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼兔魂,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了举娩?” 一聲冷哼從身側(cè)響起析校,我...
    開封第一講書人閱讀 40,167評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎铜涉,沒想到半個(gè)月后智玻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,698評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡芙代,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,767評(píng)論 3 343
  • 正文 我和宋清朗相戀三年吊奢,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片纹烹。...
    茶點(diǎn)故事閱讀 40,912評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出族展,到底是詐尸還是另有隱情袭灯,我是刑警寧澤,帶...
    沈念sama閱讀 36,572評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏贱鼻。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,254評(píng)論 3 336
  • 文/蒙蒙 一滋将、第九天 我趴在偏房一處隱蔽的房頂上張望邻悬。 院中可真熱鬧,春花似錦随闽、人聲如沸父丰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蛾扇。三九已至,卻和暖如春魏滚,著一層夾襖步出監(jiān)牢的瞬間镀首,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工鼠次, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留更哄,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,359評(píng)論 3 379
  • 正文 我出身青樓腥寇,卻偏偏與公主長(zhǎng)得像成翩,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子赦役,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,922評(píng)論 2 361

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

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,332評(píng)論 25 707
  • 用兩張圖告訴你麻敌,為什么你的 App 會(huì)卡頓? - Android - 掘金 Cover 有什么料? 從這篇文章中你...
    hw1212閱讀 12,754評(píng)論 2 59
  • 行書是介于楷書與草書之間的一種書體。行書脫胎于隸書域携,萌生于東漢而成形于魏晉簇秒,至東晉趨于成熟。 蘇東坡說:“楷如立秀鞭,...
    書畫之家網(wǎng)閱讀 2,005評(píng)論 0 1
  • 失敗是什么?沒有什么趋观,只是更走近成功一步;成功是什么?就是走過了所有通向失敗的路扛禽,只剩下一條路 偉人之所以偉大,是...
    li冰bing閱讀 195評(píng)論 0 0