##########################################################
小编提示:2.0新版已经发布 https://www.52by.com/article/34167
##########################################################
本来不想在这节课讲如何用google来抓取邮箱的,但因为我们外贸邦网站最近上线的那个提取邮箱的功能实质上也是通过google来提取,但这里面绝不存在为了那个让路的嫌疑,只是通过这几天的上线还有用户的反馈,我们发现google对大批量的抓取的监测非常严格,一个服务器的单位时间上限估计就是200左右,除非像我们脑子抽住一样为了用户体验买了100多台服务器,否则这对普通用户来说太严格了也不实用,对你们民用来说,只有一个解决方法,就是用时间换空间,拉长抓取时间。另外一个原因么大家都清楚的,为什么大家都喜欢google而不喜欢bing,你技术上确实差了别人n条街,同样一个搜索结果google就是搜索的更精准,更不要说baidu了,压根上不了台面,那还是原始时代的东西,考虑到很多同学还在科学上网的边缘,实在不适合进度太快。所以这节课分为上下两部分,上部分为正统课,也就是这篇文章的内容,本ID假设你已经会科学上网了,那么你只要照着我的课一步步做下去就可以抓取google了,如果你不会,那么你还需要下半节课来补这方面知识。
先来对之前课程比较模糊的一些理论定性下,因为距离上次课程也有2周了,同时也给新来的同学补补课。我们通过两节课的学习其实是学习了如何用机器来模拟人的重复性劳动,提到了单位经济生产力,我们来想想如果今天我不用机器的话要找邮件的步骤是怎么样的?是不是先要打开浏览器,然后输入产品关键字+邮件后缀关键字,在结果中用肉眼搜索提取,翻页再查找,然后换一个邮件后缀,再重复,高级点的在搜索结果中打开目标网址,然后对网页进行邮箱提取,再高级点的,对目标网址进行关联网页的挖掘,然后把上述提炼的邮箱放到自己的邮箱列表里进行群发。这些动作基本对于业务员来说每天都需要重复,你们的老板和同事肯定也跟你们说过,要坚持,不断的发邮件,总会有希望的。其实从公式的角度来说前半段话就是提炼大量邮件,后半段话表示邮件发出去被回信的概率,我们这里假设用机器提取的邮箱被回信的概率要小于人工提取的(这是肯定的,因为我们没有做筛选),但提取邮件的数量要远远大于人工提取的,我们只要保证:机器提取的邮箱*较小的回信概率 >= 人工提取的邮箱*较大的回信概率,也就是只要满足(机器提取的邮箱 - 人工提取的邮箱)/100 > (较大的回信概率 - 较小的回信概率)就可以了,当机器获取邮箱的成本远远小于人工获取的时候,这就很容易被验证。第二节课里中我们最后产出了一个csv文件,这种格式的文件可以被几乎所有的邮件客户端导入,聪明的你应该知道后面群发如何操作了吧。
我们要明白一个道理,存在即合理,就像玩游戏,有些人喜欢辛苦练级,有些人喜欢直接RMB购买,无非就是一个花钱买时间的事情,这和经济学中说的富人宁可把牛奶倒在地沟里也不会给穷人喝其实是一个东西。市面上存在着很多帮你找邮件的软件,外贸邦也是一样,原理万变不离其宗,你有钱可以直接去买他们的服务,没钱或者你想学点东西就老老实实的上本ID的课,但相应的你花出去的就是时间和学习成本了,每个人都需要衡量一下自己,哪些是适合自己的,哪些是不能要的。下面开始上本节课的知识点。
【注释】
大家在看以前class_1.py这种脚本文件的时候,是不是总是会看到 # 这个符号,这个意思就是告诉python被 # 标记的这行代码不要执行,这就为我们在调整一些变化下提供了很大的便利,例如下面这个示例代码:
process_type = u'bing'
#process_type = u'google'
process_type是个变量,他的值决定了我们后面调用哪个搜索引擎来抓取,由于第二行被加了 #,所以不会被执行到,结果就是我们用bing来抓取,如果我们把代码变成下面这种:
#process_type = u'bing'
process_type = u'google'
那么第一行代码就不会被python执行到了,这时候process_type的值就变成了u'google',表示我们调用google来抓取邮箱,那么下面这种情况是调用bing呢还是google?
process_type = u'bing'
process_type = u'google'
答案是google,因为python执行了第一行后又执行了第二行,第二行的结果就覆盖了第一行了。
【代理】
如果我们手上已经有可以用的代理服务器地址了,那么就把他填在下面这段代码里:
proxies = {
u'http': u'
u'https': u'
}
本ID这里例子中的8087是SS默认的端口,懂的同学是不是看的很眼熟,注意http和https两个都需要修改,如果你用的是VPN全局翻,那么端口一般就省掉了,像下面这样即可:
proxies = {
u'http': u'
u'https': u'
}
如果你这里看的一团雾水,别急,我们还有下半节课,你今天付出多少努力,明天你就会得到多少,很简单的。
没了,就这么两个知识点,本ID尽可能的把所有说了你也不一定懂的细节都隐藏掉了,我们上这些课的目的就是尽可能的让大家都能节约生命,不要浪费在无聊的重复劳动上,我们应该花更多的精力在如何写开发信,如何维护客户关系上,这种事交给电脑交给python交给我交给外贸邦就可以了。让我们打开网盘,下载class_3.py文件,右键选择“Edit with IDLE”,照着上面教的知识点修改下方红框标记的地方:
至于别的几个变量email,want,f 还是像第二课中的那些,根据自己需要的来修改,完事了按F5吧。还有一个需要注意的是,有些代理,比如路由器层面的代理可能会不支持https这个格式,碰到的情况是执行的时候提示有SSL Error这种错误提示,这时候需要我们把代码里的
上半节课完,下面开始下半节,但不是在这里上,因为下半节课的内容比较敏感,而且现在这个时间点又特别敏感,所以还是必须要收敛一点的,另外下半节课也不是每个同学都需要上的,已经会科学上网的同学或者能顺利执行class_3.py的同学是不需要上的,本ID只是对基础差的同学补补课,嗯嗯......
课件下载:https://www.52by.com/file_download/2826
第一课:2秒钟内获取50个邮箱:https://www.52by.com/article/1993
第二课:从50个邮箱到1000个:https://www.52by.com/article/1994
这里还附上微信中Leon同学的修改google方案(这个是针对启用了系统代理的方案):
新的问题,自己试着解决了,我果然是当程序员的料。 ping通谷歌,并且把proxies={ ...... } 这几行都注释掉后还需要去掉后面的“proxies=proxies”,否则会出现新的问题:NameError: global name 'proxies' is not defined。
2019.5.30 更新:感谢邦友“爱聪”的跟进,最近发现google的搜索规则发生了变动,所以之前下过第三课脚本同学需要重新下载一个新的,运行的时候需要先在cmd里多安装一个库 "pip install fake_useragent" (引号不要输入)