{{ v.name }}
{{ v.cls }}类
{{ v.price }} ¥{{ v.price }}
前两天总结一下邮箱格式的正则表达式,写了一个脚本来判断输入的邮箱地址是否符合邮箱的格式(有兴趣的朋友可以翻一下我的博客去看一下)。在网上找资料的时候,发现基本都是用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命令把后面的部分删除(其实这一步是可以和上一步通过管道|命令一次执行的)。当然上述步骤只是清理大部分内容,还有些则是需要人工干预的。经过一番努力,最后就可以得到你期望的邮箱地址了。
格式完美,于是我想我也要给这些人发邮件,传递时间陌生人之间的温暖,于是把文件通过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.
安装好之后开始转换:
转换之后的效果:
这样就看着舒服多了呢。