代理ip

>

换ip软件

>

http代理

>

ip代理

您的位置:首页 > 新闻资讯 > 文章内容
为什么爬虫要使用动态IP代理来爬取网站
来源:网连代理 作者:admin 时间:2019-07-12 16:50:03

  为什么爬虫要使用动态IP代理来爬取网站?大家写爬虫程序的时候,当抓取频率较快或者抓取一些robots.txt禁爬路径,肯定会碰到被网站屏蔽的情况,这时候目标服务器要么直接返回404,要么就是返回禁止的提示信息,总之就是爬虫失效了(抓不到你想要的内容)。


  如果遇到这种情况,对应小型爬虫来说,最简单经济有效的方式,就是通过代理来反问。


为什么爬虫要使用动态IP代理来爬取网站


  一些基本概念


  动态IP池其实就是一堆可以用来做代理访问的Pool,作为Service Provider它对外提供可用的动态IP及端口。


  动态IP从隐藏级别上分三类:


  透明代理,服务器知道你用了代理,但同时也知道你的真实IP,说白了是不以隐藏自己IP为目的使用的,比如翻墙什么的


  普通代理,服务器也知道你用了代理,但不知道你的真实IP


  高匿代理,服务器不知道你用了代理,更不知道你的真实IP


  其中高匿代理指代理服务器不向目标服务器传递X_FORWARDED_FOR变量


  Python的实现方式


  设计思路和原理本


  思路就是从目前提供代理服务的网站获取可使用的IP、端口、代理类型信息,并检测可用性,然后对外提供服务。


  功能模块


  ProxyWebsite - 目标抓取的代理服务网站


  Crawler - 抓取模块,通过HTTP来抓取定向代理服务网站内容


  Extrator - 抽取模块,将HTML页面内容,抽取成结构化数据


  Data - 数据模块,为结构化数据存储服务


  Validator - 检验模块,检查代理的可用性


  Service - 对外提供REST API服务


  核心代码实现示例


  ProxyWebsite


  class ProxyWebsite(object):


  def __init__(self, url, pattern, ip_pos, port_pos):


  self.url = url


  self.pattern = pattern


  self.ip_pos = ip_pos


  self.port_pos = port_pos


  Crawler


  class Crawler(object):


  @staticmethod


  def get_html(proxy_website):


  try:


  rsp = requests.get(proxy_website.url)


  return (0, rsp.text)


  except Exception as e:


  return (-1, e)


  Extrator


  class Extractor(object):


  @staticmethod


  def get_data(proxy_website, html):


  try:


  pattern = re.compile(proxy_website.pattern, re.M|re.S )


  return  map(lambda x:(x[proxy_website.ip_pos], x[proxy_website.port_pos]), pattern.findall(html))


  except Exception as e:


  return (-1, e)


  Data


  class Data(object):


  def __init__(self, ip, port, http_enable, https_enable):


  self.ip = ip


  self.port = port


  self.http_enable = http_enable


  self.https_enable = https_enable


  Validator


  class Validator(object):


  @staticmethod


  def get_baidu(ip, port):


  try:


  proxies = {'http': 'http://%s:%s' %(ip, port), 'https': 'http://%s:%s' %(ip, port)}


  http_valid_result  = False


  rsp = requests.get('http://www.baidu.com', proxies = proxies, verify=False, timeout=(10, 60))


  if rsp.status_code == 200:


  http_valid_result  = True


  rsp = requests.get('https://www.baidu.com', proxies = proxies, verify=False, timeout=(10, 60))


  if rsp.status_code == 200:


  https_valid_result  = True


  return (0, (http_valid_result, https_valid_result))


  except Exception as e:


  return (-1, e)


相关文章内容简介
推荐阅读
  • 29 2019-06
    竞争优势与代理IP服务的关系

    外贸在线电子商务是一个竞争激烈的行业,价格从不同地点到国家变化很大。在这个没有边界与限制的网络环境中,我们如何跟上价格趋势并保持竞争力?下面为大家讲述竞争优势与代理IP服务

  • 15 2019-06
    怎么更换电脑IP

    更换IP是使用电脑比较常见的事情,但是很多初学者并不知道IP该怎么更换,下面就为大家详细的介绍怎么更换电脑IP。1.打开电脑后,找到网络图标,右击选择属性。或者直接在桌面左下角的开

  • 09 2019-12
    浏览器无法连接到代理服务器的解决办法

    今天在电脑打开浏览器时,遇到“无法连接代理服务器”提示,网页打不开,但是QQ、微信这些客户端软件可以正常使用。后来,通过设置浏览器的代理服务器,问题解决了。具体操作如下:

  • 30 2019-09
    爬虫有了代理IP可以为所欲为吗

    网络爬虫越来越火,很多朋友纷纷加入,各种培训班也是风生水起,很多人认为学会了网络爬虫就可以为所欲为了,抓天抓地抓空气,我会爬虫我神气,事实真的是这样吗?爬虫有了代理IP真的

  • 18 2019-06
    代理IP对营销补量有什么效果

    在日常生活中,网络已经离不开我们的生活。现在又很多行业都需要进行一些补量工作,通过补量工作可以有效的提高我们网站的转换率。但补量工作虽然很有效果,但是这个工作并不是很好进

  • 09 2019-09
    黑客侦察和隐藏IP地址的方法

    在正式进行各种“黑客行为”之前,黑客会采取各种手段,探测(也可以说“侦察”)对方的主机信息,以便决定使用何种最有效的方法达到自己的目的。来看看黑客是如何获知最基本的网络信息