用Linux shell脚本爬取豆瓣邮箱

阅读:1196 2019-03-20 14:08:41 来源:新网

前两天总结一下邮箱格式的正则表达式,写了一个脚本来判断输入的邮箱地址是否符合邮箱的格式(有兴趣的朋友可以翻一下我的博客去看一下)。在网上找资料的时候,发现基本都是用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呢,有兴趣的朋友参考我的博客,linuxshell验证邮箱合法性。

执行之后,给大家看一下那两个文件:

为了保护隐私允许我自行打码。

暂时初步拿到了邮箱,但是含有邮箱的文件里面还是好多东西,我们可以进一步的清理。观察发现,包含邮箱的行基本都是邮箱地址。。。,我们可以通过sed命令把邮箱地址前面的给删除,怎么来做呢?

可以看到,大部分邮箱前面的部分给清理掉了,但是我们还发现后面还有好多是

结尾的,然后我们可以再一次使用sed命令把后面的部分删除(其实这一步是可以和上一步通过管道|命令一次执行的)。

当然上述步骤只是清理大部分内容,还有些则是需要人工干预的。经过一番努力,最后就可以得到你期望的邮箱地址了。

格式完美,于是我想我也要给这些人发邮件,传递时间陌生人之间的温暖,于是把文件通过samba共享(下次更新samba共享)到windows里面去了。打开之后我就纳闷了,效果如下:

在linux下明明是一行行多么整齐,怎么到了windows就成了一行了呢?后来经过查阅资料发现,原来是因为linux和windows下文件换行的符号是不一样的,windows下换行是"rn",而linux下是"n",mac下是"r"。所以在windows下打开linux系统的文件只显示了一行。

那怎么让才能让windows下打开linux的文件正常的显示呢?

我们可以通过一个命令转换一下就可以了,那就是unix2dos:将具有unix格式的文件转换为windows下的格式。这个命令还有一个双胞胎弟弟:dos2unix:它的功能和哥哥的功能正相反。

命令格式:unix2dos(dos2unix)[-kh]oldfilenewfile

-k保留源文件的mtime(使用这个选项后面不用加newfile)

-h保留原来的旧文件,并将转换后的文件输出到新文件

如果linux上没有这个命令,安装一下就可以了:yuminstall-yunix2dos.

安装好之后开始转换:

转换之后的效果:

这样就看着舒服多了呢。

相关文章
{{ v.title }}
{{ v.description||(cleanHtml(v.content)).substr(0,100)+'···' }}
你可能感兴趣
推荐阅读 更多>
推荐商标

{{ v.name }}

{{ v.cls }}类

立即购买 联系客服