全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Python爬虫DNS解析缓存方法实例分析

本文实例讲述了Python爬虫DNS解析缓存方法。分享给大家供大家参考,具体如下:

前言:

这是Python爬虫中DNS解析缓存模块中的核心代码,是去年的代码了,现在放出来 有兴趣的可以看一下。

一般一个域名的DNS解析时间在10~60毫秒之间,这看起来是微不足道,但是对于大型一点的爬虫而言这就不容忽视了。例如我们要爬新浪微博,同个域名下的请求有1千万(这已经不算多的了),那么耗时在10~60万秒之间,一天才86400秒。也就是说单DNS解析这一项就用了好几天时间,此时加上DNS解析缓存,效果就明显了。

下面直接放代码,说明在后面。

代码:

# encoding=utf-8
# ---------------------------------------
#  版本:0.1
#  日期:2016-04-26
#  作者:九茶<bone_ace@163.com>
#  开发环境:Win64 + Python 2.7
# ---------------------------------------
import socket
# from gevent import socket
_dnscache = {}
def _setDNSCache():
  """ DNS缓存 """
  def _getaddrinfo(*args, **kwargs):
    if args in _dnscache:
      # print str(args) + " in cache"
      return _dnscache[args]
    else:
      # print str(args) + " not in cache"
      _dnscache[args] = socket._getaddrinfo(*args, **kwargs)
      return _dnscache[args]
  if not hasattr(socket, '_getaddrinfo'):
    socket._getaddrinfo = socket.getaddrinfo
    socket.getaddrinfo = _getaddrinfo

说明:

其实也没什么难度,就是将socket里面的缓存保存下来,避免重复获取。
可以将上面的代码放在一个dns_cache.py文件里,爬虫框架里调用一下这个_setDNSCache()方法就行了。

需要说明一下的是,如果你使用了gevent协程,并且用上了monkey.patch_all(),要注意此时爬虫已经改用gevent里面的socket了,DNS解析缓存模块也应该要用gevent的socket才行。

更多关于Python相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。


# Python  # 爬虫  # DNS  # 解析缓存  # Python模块域名dnspython解析  # python批量处理多DNS多域名的nslookup解析实现  # 利用Python+阿里云实现DDNS动态域名解析的方法  # Python实现的简单dns查询功能示例  # python实现域名系统(DNS)正向查询的方法  # Python中使用scapy模拟数据包实现arp攻击、dns放大攻击例子  # Python写的一个简单DNS服务器实例  # python实现DNS正向查询、反向查询的例子  # Python DNS查询放大攻击实现原理解析  # 的是  # 进阶  # 这是  # 操作技巧  # 这一  # 如果你  # 放在  # 相关内容  # 也没  # 几天  # 这就  # 数据结构  # 用了  # 要注意  # 给大家  # 要用  # 有兴趣  # 看一下  # 在后面  # 才行 


相关文章: 如何在VPS电脑上快速搭建网站?  C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)  宝塔新建站点报错如何解决?  高防服务器如何保障网站安全无虞?  建站之星后台管理系统如何操作?  建站主机如何安装配置?新手必看操作指南  建站之星后台密码如何安全设置与找回?  天津个人网站制作公司,天津网约车驾驶员从业资格证官网?  建站与域名管理如何高效结合?  打鱼网站制作软件,波克捕鱼官方号怎么注册?  网站制作公司广州有几家,广州尚艺美发学校网站是多少?  建站之星导航配置指南:自助建站与SEO优化全解析  成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?  如何在新浪SAE免费搭建个人博客?  唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化  魔毅自助建站系统:模板定制与SEO优化一键生成指南  制作网站的公司有哪些,做一个公司网站要多少钱?  如何用VPS主机快速搭建个人网站?  nginx修改上传文件大小限制的方法  公司网站设计制作厂家,怎么创建自己的一个网站?  linux top下的 minerd 木马清除方法  如何在万网开始建站?分步指南解析  香港服务器选型指南:免备案配置与高效建站方案解析  如何快速查询网址的建站时间与历史轨迹?  网站制作网站,深圳做网站哪家比较好?  家庭建站与云服务器建站,如何选择更优?  广州网站建站公司选择指南:建站流程与SEO优化关键词解析  如何高效利用200m空间完成建站?  如何在宝塔面板创建新站点?  教程网站设计制作软件,怎么创建自己的一个网站?  如何快速生成ASP一键建站模板并优化安全性?  网站制作多少钱一个,建一个论坛网站大约需要多少钱?  如何选择高效可靠的多用户建站源码资源?  如何选择建站程序?包含哪些必备功能与类型?  如何通过二级域名建站提升品牌影响力?  招贴海报怎么做,什么是海报招贴?  如何快速完成中国万网建站详细流程?  香港服务器部署网站为何提示未备案?  html制作网站的步骤有哪些,iapp如何添加网页?  长沙企业网站制作哪家好,长沙水业集团官方网站?  如何基于云服务器快速搭建个人网站?  建站之星后台密码遗忘如何找回?  如何通过服务器快速搭建网站?完整步骤解析  网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?  官网自助建站平台指南:在线制作、快速建站与模板选择全解析  网站制作软件免费下载安装,有哪些免费下载的软件网站?  青岛网站建设如何选择本地服务器?  如何快速建站并高效导出源代码? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。