本来不想在这节课讲如何用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'http://127.0.0.1:8087',

u'https': u'http://127.0.0.1:8087'

}

本ID这里例子中的8087是SS默认的端口,懂的同学是不是看的很眼熟,注意http和https两个都需要修改,如果你用的是VPN全局翻,那么端口一般就省掉了,像下面这样即可:

proxies = {

u'http': u'http://127.0.0.1',

u'https': u'http://127.0.0.1'

}

如果你这里看的一团雾水,别急,我们还有下半节课,你今天付出多少努力,明天你就会得到多少,很简单的。

没了,就这么两个知识点,本ID尽可能的把所有说了你也不一定懂的细节都隐藏掉了,我们上这些课的目的就是尽可能的让大家都能节约生命,不要浪费在无聊的重复劳动上,我们应该花更多的精力在如何写开发信,如何维护客户关系上,这种事交给电脑交给python交给我交给外贸邦就可以了。让我们打开网盘,下载class_3.py文件,右键选择“Edit with IDLE”,照着上面教的知识点修改下方红框标记的地方:

第三课:从google抓取邮箱

至于别的几个变量email,want,f 还是像第二课中的那些,根据自己需要的来修改,完事了按F5吧。还有一个需要注意的是,有些代理,比如路由器层面的代理可能会不支持https这个格式,碰到的情况是执行的时候提示有SSL Error这种错误提示,这时候需要我们把代码里的https://www.google.com.hk/search 改写成 http://www.google.com.hk/search 。

上半节课完,下面开始下半节,但不是在这里上,因为下半节课的内容比较敏感,而且现在这个时间点又特别敏感,所以还是必须要收敛一点的,另外下半节课也不是每个同学都需要上的,已经会科学上网的同学或者能顺利执行class_3.py的同学是不需要上的,本ID只是对基础差的同学补补课,嗯嗯......

百度网盘: http://pan.baidu.com/s/1mi2d1Ba

第一课:2秒钟内获取50个邮箱:http://yue.52wmb.com/article/1993

第二课:从50个邮箱到1000个:http://yue.52wmb.com/article/1994

这里还附上微信中Leon同学的修改google方案:

新的问题,自己试着解决了,我果然是当程序员的料。 ping通谷歌,并且把proxies={ ...... } 这几行都注释掉后还需要去掉后面的“proxies=proxies”,否则会出现新的问题:NameError: global name 'proxies' is not defined。

本文经邦号 【我真的是客服】 投稿,并经邦阅网编辑,转载请注明出处、作者和【本文链接】。

下一篇
22
分享至:
投稿邦号
评论
登录 后参与评论
  • Vicky
    Vicky

    楼主不行噢,我登了VPN后按照你说的这样改了proxies = {

    u'http': u'http://127.0.0.1',

    u'https': u'http://127.0.0.1'


    }

    2星期前
    邦号回复

    端口呢,端口呢,端口呢

    2星期前
  • Alex
    Alex

    PS C:\Users\HIAPAD\desktop\python> python class_3.py
    File "class_3.py", line 80
    re_email = re.compile(ur'\w+[a-zA-Z0-9_.\-]*@%s' %e)
    ^
    SyntaxError: invalid syntax
    PS C:\Users\HIAPAD\desktop\python>
    提示这个错误是什么原因啊

    2018-09-27
    邦号回复

    你使用的是py3还是py2.7?

    2018-09-28
  • 喔吁喔吁
    喔吁喔吁

    已成功解决问题 还是代理服务器没填写对 原来不是VPN成功后显示的IP地址 哈哈哈

    2018-09-14
  • 喔吁喔吁
    喔吁喔吁

    Traceback (most recent call last):
    。。。。。。。。。。。。。
    ProxyError: HTTPSConnectionPool(host='www.google.com.hk', port=443): Max retries exceeded with url: /search?q=Ferreyros+Saa+%40hotmail.com&start=0&num=100 (Caused by ProxyError('Cannot connect to proxy.', NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0x03EC7670>: Failed to establish a new connection: [Errno 10061] ',)))

    Proxies后边填写的是翻墙成功后的IP地址,为什么总是不行,但是电脑可以访问google,facebook等等

    2018-09-14
  • Titus999
    Titus999

    学会了前两课,第三课没成功,不过还是很感谢,很有收获,特别是楼主的开发思路。

    2018-06-29
  • lanalin
    lanalin

    我觉得我有本事把电脑搞残

    2018-06-01
  • 邦友1513820032758
    邦友1513820032758

    用了免费的VPN, 除下以下error, 如何解?
    Traceback (most recent call last):
    File "C:\Users\Administrator\Desktop\桌面文件\新建文件夹\软件\Python\class_3.py", line 79, in <module>
    nodes = process(key, e, start, rows)
    File "C:\Users\Administrator\Desktop\桌面文件\新建文件夹\软件\Python\class_3.py", line 61, in process_google
    ret = requests.get(u'http://www.google.com.hk/search', params=par, proxies=proxies)
    File "C:\Python27\lib\site-packages\requests\api.py", line 72, in get
    return request('get', url, params=params, **kwargs)
    File "C:\Python27\lib\site-packages\requests\api.py", line 58, in request
    return session.request(method=method, url=url, **kwargs)
    File "C:\Python27\lib\site-packages\requests\sessions.py", line 508, in request
    。。。。。。。。。。。。。

    2018-05-02
    邦号回复

    还是代理不通的问题,能在cmd中直接ping通google吗?

    2018-05-02
  • mumu1906
    mumu1906

    二、

    File "C:\Python27\lib\site-packages\requests\adapters.py", line 502, in send
    raise ProxyError(e, request=request)
    ProxyError: HTTPSConnectionPool(host='www.google.com.hk', port=443): Max retries exceeded with url: /search?q=luvas+de+seguran%C3%A7a+%40hotmail.com&start=0&num=100 (Caused by ProxyError('Cannot connect to proxy.', NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0x031938B0>: Failed to establish a new connection: [Errno 10061] ',)))

    2018-04-27
    邦号回复

    没走通代理哦

    2018-04-27
  • mumu1906
    mumu1906

    登陆vpn之后,,,,
    Traceback (most recent call last):
    File "E:\2018\我们都是程序员\class_3.py", line 79, in <module>
    nodes = process(key, e, start, rows)
    File "E:\2018\我们都是程序员\class_3.py", line 61, in process_google
    ret = requests.get(u'https://www.google.com.hk/search', params=par, proxies=proxies)
    File "C:\Python27\lib\site-packages\requests\api.py", line 72, in get
    return request('get', url, params=params, **kwargs)
    File "C:\Python27\lib\site-packages\requests\api.py", line 58, in request
    return session.request(method=method, url=url, **kwargs)
    File "C:\Python27\lib\site-packages\requests\sessions.py", line 508, in request
    resp = self.send(prep, **send_kwargs)
    File "C:\Python27\lib\site-packages\requests\sessions.py", line 618, in send
    r = adapter.send(request, **kwargs)

    还有后续。。。

    2018-04-27
  • yisa
    yisa

    欲哭无泪!!!

    Traceback (most recent call last):
    File "C:\Users\Administrator\Desktop\class_3.py", line 79, in <module>
    nodes = process(key, e, start, rows)
    File "C:\Users\Administrator\Desktop\class_3.py", line 61, in process_google
    ret = requests.get(u'https://www.google.com.hk/search', params=par, proxies=proxies)
    File "C:\Python27\lib\site-packages\requests\api.py", line 72, in get
    return request('get', url, params=params, **kwargs)
    File "C:\Python27\lib\site-packages\requests\api.py", line 58, in request
    return session.request(method=method, url=url, **kwargs)
    File "C:\Python27\lib\site-packages\requests\sessions.py", line 508, in request
    resp = self.send(prep, **send_kwargs)
    File "C:\Python27\lib\site-packages\requests\sessions.py", line 618, in send
    r = adapter.send(request, **kwargs)

    2018-04-09
    邦号回复

    没有用VPN哦

    2018-04-10
  • Wade
    Wade

    楼主下面这什么情况
    Traceback (most recent call last):
    File "D:\Class\class_3.py", line 25, in <module>
    f = open(u'd:/52wmb.com.csv', u'w')
    IOError: [Errno 13] Permission denied: u'd:/52wmb.com.csv'

    2018-03-20
    邦号回复

    这个说明你没有权限对D盘进行写入,你可以尝试换个目录,或者换个系统账户运行,最好是管理员权限的账户。

    2018-03-26
  • daaci
    daaci

    你好

    2017-12-30
  • ultek
    ultek

    楼主,下面错误啥情况:
    Traceback (most recent call last):
    File "D:\download\我们都是程序员\class_3re GOOGLE AGENT.py", line 147, in <module>
    nodes = process(key, e, start, rows)
    File "D:\download\我们都是程序员\class_3re GOOGLE AGENT.py", line 129, in process_google
    ret = requests.get(u'https://www.google.com.hk/search', params=par, proxies=proxies)
    File "D:\Python27\lib\site-packages\requests\api.py", line 71, in get
    File "D:\Python27\lib\site-packages\requests\adapters.py", line 465, in send
    raise ProxyError(e, request=request)
    ProxyError: HTTPSConnectionPool(host='www.google.com.hk', port=443): Max retries exceeded with url: /search?q=aroma+purifier+%40hotmail.com&start=0&num=100 (Caused by ProxyError('Cannot connect to proxy.', error(10054, '')))
    >>>

    2017-11-14
    邦号回复

    不能连接代理。。。说明你本地代理服务器有问题呗

    2017-11-14
  • 邦友1510126811230
    邦友1510126811230

    楼主,正解,确实不是私有。
    换成google,果然会解析错误

    2017-11-10
  • 邦友1510126811230
    邦友1510126811230

    感谢楼主,今天shadowsocks能用google了,但是昨天的错误依然存在,我的IP端口是这样的http://us3.hxfq.in:17666 还有为什么是连接到google.com.hk , 但是这依然没有用,出现File "C:\Python27\lib\site-packages\requests\api.py", line 72, in get
    return request('get', url, params=params, **kwargs) , line58,618,502。。。。。等等的警示,公众号以关注。期待回复!

    2017-11-09
    邦号回复

    我这边刚才测试了下,是ok的,估计还是你的代理服务器不是私有的,当很多人用同一个代理的时候google就会对这种抓取进行限制,返回的就是502错误。至于为什么是google.com.hk,我只是在举例子的时候正好用到了这个,你也可以换成你自己喜欢的,比如没有hk结尾的,但可能会引起解析错误。

    2017-11-09
爱心公益
举报
问题反馈
返回顶部