linux shell 豆瓣,用Linux shell脚本爬取豆瓣邮箱
前兩天總結一下郵箱格式的正則表達式,寫了一個腳本來判斷輸入的郵箱地址是否符合郵箱的格式(有興趣的朋友可以翻一下我的博客去看一下)。在網上找資料的時候,發現基本都是用Python和Java來做爬蟲,當然Python的居多。本著學習的心態,既然得到了郵箱地址有效性的判斷,那就順便用腳本寫一個抓取網頁郵箱的爬蟲吧。
豆瓣上著了一個網頁,是一個人發起了一項活動,讓大家留下郵箱,然后和陌生人進行郵箱通信,增加溫暖。(也是很感性呢),不過現在的人們越來越離不開手機了,在這個活動中也許能找到以往那種陌生的溫暖呢。網頁網址是:https://www.douban.com/group/topic/41562980/?start=0。大家可以進去看看,也可以參加進去,離開手機一會。
找到網頁之后,下一步就是寫腳本了。
腳本解釋:
第5行:www是獲取網址,把含有郵箱地址的網址輸入。
第6行:用curl來抓取網頁內容,并下載到文件2data.txt里面。
第7行:取得上一步文件的所有行數,方便做循環。
第8-11行:這個For循環就是遍歷所有行,并且把包含郵箱的行重定向到文件1return.txt里面。其中:sed是打印指定的行,egrep是過濾出包含郵箱地址的行。為什么用egrep而不用grep呢,有興趣的朋友參考我的博客,Linux shell驗證郵箱合法性。
執行之后,給大家看一下那兩個文件:
為了保護隱私允許我自行打碼。
暫時初步拿到了郵箱,但是含有郵箱的文件里面還是好多東西,我們可以進一步的清理。觀察發現,包含郵箱的行基本都是
郵箱地址。。。,我們可以通過sed命令把郵箱地址前面的
給刪除,怎么來做呢?
可以看到,大部分郵箱前面的部分給清理掉了,但是我們還發現后面還有好多是
結尾的,然后我們可以再一次使用sed命令把后面的部分刪除(其實這一步是可以和上一步通過管道|命令一次執行的)。當然上述步驟只是清理大部分內容,還有些則是需要人工干預的。經過一番努力,最后就可以得到你期望的郵箱地址了。
格式完美,于是我想我也要給這些人發郵件,傳遞時間陌生人之間的溫暖,于是把文件通過Samba共享(下次更新Samba共享)到Windows里面去了。打開之后我就納悶了,效果如下:
在Linux下明明是一行行多么整齊,怎么到了Windows就成了一行了呢?后來經過查閱資料發現,原來是因為Linux和Windows下文件換行的符號是不一樣的,Windows下換行是"\r\n",而Linux下是"\n",Mac下是"\r"。所以在Windows下打開Linux系統的文件只顯示了一行。
那怎么讓才能讓windows下打開Linux的文件正常的顯示呢?
我們可以通過一個命令轉換一下就可以了,那就是unix2dos:將具有unix格式的文件轉換為Windows下的格式。這個命令還有一個雙胞胎弟弟:dos2unix:它的功能和哥哥的功能正相反。
命令格式:unix2dos(dos2unix)[-kh]oldfile ? ? ? newfile
-k 保留源文件的mtime(使用這個選項后面不用加newfile)
-h 保留原來的舊文件,并將轉換后的文件輸出到新文件
如果Linux上沒有這個命令,安裝一下就可以了:yum install -y unix2dos.
安裝好之后開始轉換:
轉換之后的效果:
這樣就看著舒服多了呢。
總結:Linux shell腳本呢主要用于監控運維,當然從上面來看爬取網頁其實也是蠻簡潔的,只需要幾行代碼就OK了,但是后續的處理可就稍微復雜一些。往后學了Java和Python之后,然后再寫一下Java和Python的爬蟲對比一下。對爬取郵箱做個全面的總結。今天就到這了,明天總結Samba下Linux和Windows的文件共享。
總結
以上是生活随笔為你收集整理的linux shell 豆瓣,用Linux shell脚本爬取豆瓣邮箱的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python requests get
- 下一篇: linux批量切割图片,MAC中用She