本文实例讲述了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小时内与您取得联系。