为什么需要服务器采集

大规模爬虫的需要

最大的网络爬虫自然是搜索引擎,前面我们技术的讨论是建立在个人电脑上,如今我们需要几天几夜的去爬取数据,个人电脑是在难以满足需求,由此服务器采集尤为必要

防止IP地址被封杀

在个人计算机上运行爬虫也有应对的方法,可以维护一个代理池。但是网上的免费代理失效快,运行缓慢,就算是付费代理也不稳定,这样就显得在大型爬虫中不讨巧。使用动态IP拨号服务器的ADSL拨号方法和Tor进行代理访问的方法可以成功修改访问的网站的IP,效果非常好

使用动态IP拨号服务器

特点:每次拨号都会换一个新的IP地址

一般来说,这个IP池很大,可能有多个AB段,IP数量基本上用不完。对于爬虫来说,这简直是大杀器,能够轻松解决封杀IP的限制

购买拨号服务器

image.png

登录拨号服务器

购买后你会得到服务器地址、用户名、密码,还会获得拨号上网的用户名和密码

基本步骤

打开远程桌面连接(Win+R —-> 输入mstsc.exe)

image.png

然后填写服务器IP地址,如果有端口号也要记得填写

image.png

然后就可以输入账号密码了

Python代码快速拨号

由于自身条件限制,无法实战,就把书里面的笔记和思路记下来而且这里不提供代码,等以后有机会检验在写出来

image.png

可以使用Python控制OS,从而实现断开宽带连接、重新连接宽带的功能

我们可以将爬虫和更换IP功能结合起来,也就是说当爬虫结果返回错误的时候,可以更换一个IP,然后使用一个递归函数再进行爬取

使用Tor代理服务器

安装Tor

[https://www.cnblogs.com/binyyds/p/15021941.html](https://www.cnblogs.com/binyyds/p/15021941.html)

Tor的使用(与Python结合)

安装两个库

pip install pysocks pip install stem

隐藏IP验证

  1. import socks
  2. import socket
  3. import requests
  4. socks.set_default_proxy(socks.SOCKS5,"127.0.0.1",9150)
  5. socket.socket = socks.socksocket
  6. a = requests.get("http://checkip.amazonaws.com").text
  7. print a

访问这个网站,发现已经是隐藏IP,你可以直接在浏览器输入IP,会发现自己是隐藏IP

更换IP的代码实现

  1. #coding=utf-8
  2. from stem import Signal
  3. from stem.control import Controller
  4. import socket
  5. import socks
  6. import requests
  7. import time
  8. import sys
  9. reload(sys)
  10. sys.setdefaultencoding('utf-8')
  11. controller = Controller.from_port(port=9151)
  12. controller.authenticate()
  13. socks.set_default_proxy(socks.SOCKS5,"127.0.0.1",9150)
  14. socket.socket = socks.socksocket
  15. total_scrappy_time = 0
  16. total_changeIP_time = 0
  17. for x in range(0,10):
  18. a = requests.get("http://checkip.amazonaws.com").text
  19. print ("第"+str(x+1)+"次IP:"+a)
  20. time1 = time.time()
  21. a = requests.get("http://www.santostang.com/").text
  22. time2 = time.time()
  23. total_scrappy_time = total_scrappy_time + time2-time1
  24. print ("第"+str(x+1)+"次抓取花费时间:"+str(time2-time1))
  25. time3 = time.time()
  26. controller.signal(Signal.NEWNYM)
  27. time.sleep(5)
  28. time4 = time.time()
  29. total_changeIP_time = total_changeIP_time + time4-time3-5
  30. print ("第"+str(x+1)+"次更换IP花费时间: "+str(time4-time3-5))
  31. print ("平均抓取花费时间:"+str(total_scrappy_time/10))
  32. print ("平均更换IP时间:"+str(total_changeIP_time/10))

Tor的优点

  1. 完全免费
  2. 更换IP过程较为稳定,速度快,相比代理池稳定