python爬取网络的邮箱地址,从50个邮箱到1000个,第二课
先对上节课中的一些问题做下集中回答:
世界上还没有一种方法可以有效的告诉我们提取出来的邮箱是有效的还是无效的,是采购商的还是供应商,或者是能明确告诉我们A/B两种状态中的一种,但这并不妨碍我们的目标,我们的目标是追求 “n个邮箱*概率=询盘” 这种状态,当概率固定的时候(通常可以认为是一个很小值),这时候提高n就变得很重要,这也是今天这课的核心。
有部分同学在执行pip的两条命令的时候会收到“该命令无效。。。”这种提示,这是因为某些区域的网络对这块做了限制,解决方法是看网盘里本ID上传的一篇补充文章“pip在命令提示窗口报错的解决方案”,照着做就可以了。
搞清楚google抓取和抓取google邮箱的区别,一个是使用google引擎抓取,和我们现在用bing是一样的,另一个是在现有的搜索引擎下抓取google的邮箱(也就是gmail),我们今天还是使用bing,理由大家都懂的,后面会专门开一个课教大家使用google抓取。
下面来上课,我们在第一节课中学会运行的那个脚本,如果我们稍微看一下代码,或从结果上分析,就会知道有几个局限性,第一个是她单次只能抓取一类邮箱,导致我们某个关键字对应的结果会很有限;第二个是一次只抓取50条数据(去掉不匹配的,实际返回的<50),这是因为没有处理翻页。今天本ID就带领大家一并解决掉这些问题,顺带多交大家一个衍生出来的问题,当返回结果有1000条的时候,就需要导出个文件了,否则粘贴复制就会麻烦死你。
【数组】
要解决以上的问题,我们要引入一个程序的概念“数组”,这个其实很好理解,数组就是一群具有相同性质的东西聚合体,比如之前我们用单引号括起来的那串字母 u'hotmail.com' 就是表示这是一个字符串,字符串前面的u表示的这个字符串是unicode格式的,不知道什么是unicode吧,没关系,我们先背出来,字符串前面都需要固定写一个u的,这是固定格式,那么一组字符串怎么表示呢,答案是用 [ ] 括起来,下面是一个示例,表示我们想同时抓取 hotmail和yahoo的邮箱:
email = [u'hotmail.com', u'yahoo.com']
多个字符串之间用逗号隔开,你可以按照这个格式扩展你想得到的邮箱后缀,本ID只带你入门,但最后开干的事情是你自己搞定的,邮箱的后缀网上一搜一大把,把你想得到的都填上就好了,这个直接决定了你最后能搜到的邮箱数量,如果你连这步都懒得做,那么你直接来外贸邦买钻石会员好了。
【变量】
变量我们理解成一个标识,就像学校里的学号,这是学校对每一个学生的唯一标识,但这个标识在每一届对应的学生是不同的,比如2016界的007号对应的是王二麻子,但2004界的007号对应的可能是林志玲,对于学校来说,不变的是007学号,变得是007最终对应的那个,这个道理在程序里也是一样的。现在我们需要设定一个变量,这个变量是我们期望抓取的数量,现在我们就假定是1000好了,但到底这个最终能不能到1000,还需要取决于我们上面那个提供的数组你有没有好好补充完内容。
want = 1000
want就是个标识,和007一样,他现在的值等于1000,记住,数字是不需要加引号和u的,标识也是一样的,这里我们不需要太贪心,比如把这个值设置为10w+这种,因为这里有个坑,每个搜索引擎都会时刻监视我们的行为,当我们很频繁的去请求或去抓取的话,轻则需要人工输入验证码,重责被关一段时间(就是不让我们访问),这里面有个平衡点,我们需要不断尝试才能知道那个G点再哪里,本ID建议你一开始,先设个1000,然后数组那里呢也不要多,先加个2,3个左右,慢慢的再增多。
【输出文件结果】
当我们做了上面两步后,正常情况下按了F5就会看到源源不断的邮箱扑面而来,暗爽的时候也会给我们管理带来很多不便,如果能把结果都保存到一个文件里那该多好,没问题,满足你,看以下代码:
f = open(u'd:/email.csv', u'w')
已经能看懂一半了吧,看不懂把文章从头再看一遍,f是一个变量,u'd:/email.csv'是一个字符串,表示我们最后在D盘根目录下生成了一个 email.csv 的结果文件,有需要的修改自己想要的位置和文件名,但注意在PYTHON中路径是以 / 分开的,u'w'的意思是每一次生成这个文件都是覆盖之前老的已有的,如果我们想每一次新的结果都继续加在文件末端而不是覆盖,把这个参数改成 u'a'就可以了。还有,这里用了csv的格式,这是一种文本格式,可以用excel打开。
###################################################
以上就是今天第二节课要上的知识点,我们了解了数组是怎么回事,知道了变量这个东西,也知道写文件差不多是这个样子的,下次如果你公司有心仪的程序GGMM,记得用上面这些术语去套套近乎。本ID已经为你准备好了第二课的脚本了,虽然这个脚本能直接运行,但我真的很想让你知道点皮毛,最起码知道要修改哪几个地方吧,老规矩,下载网盘中的class_2.py,右键选"Edit With IDLE",看到的应该是下面这个界面:
看到熟悉的 email ,want,f 这三个变量了么(如果你刚才好好上课的话),改吧,骚年!当然你也可以直接按F5看看结果先,正常情况下,我们会看到又出来一个熟悉的界面,不停地跳着邮箱,这回可不像第一课的那个,要跳一会儿的,大概3,4分钟的样子吧,看到 >>> 这个提示符出来就表示结束了,看下图:
去D盘收获我们的劳动成果吧,如果你没有改 f 这个变量,那么52wmb.com.csv这个文件已经躺在根目录下了,用excel打开看看,是不是幸福满满啊。
差不多了,本ID现在脑子里已经憋不出东西了,本来还想再说说怎么规避搜索引擎监控的机制的,但今天就先算了,大家执行脚本的时候小心点,不要一下子添加过多的邮箱后缀,也不要用太大的抓取值。
第一课:2秒钟内获取50个邮箱:https://byy3.com/?p=480
第三课:从google抓取邮箱:https://byy3.com/?p=482