大家好,今天来为大家分享高效IP代理池解决方案:深度挖掘MongoDB数据库潜力的一些知识点,和的问题解析,大家要是都明白,那么可以忽略,如果不太清楚的话可以看看本篇文章,相信很大概率可以解决您的问题,接下来我们就一起来看看吧!
````
#-*-编码=utf-8-*-
进口请求
fromlxmlimporte树
导入时间
导入pymongo
来自多处理导入池
类Getproxy(对象):
def__init__(自身):
self.headers={"User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML,如Gecko) Chrome/59.0.3071.115 Safari/537.36"}
self.url="http://www.xicidaili.com/wt/"
self.client=pymongo.MongoClient("localhost",27017)
self.xici=self.client["xici"]
self.xiciipinfo=self.xici["xiciipinfo"]
#self.removeip="127.0.0.1" #第一次运行时会检测到该变量,因为只有检测失败才会赋值。
defgetip(self,num):
#爬取西庙所有代理并更新到数据库中
url=self.url + str(num)
wb_data=requests.get(url,headers=self.headers)
html=etree.HTML(wb_data.text)
# htmls=etree.tostring(html)
ips=html.xpath("//tr[@class="odd"]/td[2]/text()")
ports=html.xpath("//tr[@class="odd"]/td[3]/text()")
协议=html.xpath("//tr[@class="odd"]/td[6]/text()")
区域=html.xpath("//tr[@class="odd"]/td[4]/a/text()")
forip,端口,协议,区域inzip(ips,端口,协议,区域):
数据={
"ip": ip,
‘端口’:端口,
"协议":协议,
‘区域’:区域,
}
打印数据
#self.xiciipinfo.insert_one(数据)
#if self.removeip !=ip: #这里添加判断。如果是下面检测到的不可用IP,则不会更新并录入数据库,这样可以节省下面的检测时间。
self.xiciipinfo.update({"ip":ip},{"$set":data},True)
defcount(自身,num):
foriinrange(1,num):
self.gettip(i)
时间.睡眠(2)
defdbclose(自我):
self.client.close()
defgetiplist(自我):
#将数据库中的数据整理成列表
ips=self.xiciipinfo.find()
代理列表=[]
福里尼普斯:
b="http"+"://"+ i["ip"] +":"+ i["端口"]
代理={"http": b}
# 打印代理
proxylist.append(代理)
# 打印代理列表
返回代理列表
defiptest(自我,代理):
#检测IP,更新到数据库,删除不可用的IP
ip=proxy["http"][7:].split(":")[0]
尝试:
requests.get("http://wenshu.court.gov.cn/",proxies=proxy,timeout=6)
除了:
print "字段.."
#self.removeip=ip #给class属性赋值
self.xiciipinfo.remove({"ip": ip})#使用remove方法删除符合条件的
print"现在删除它.{}".format(ip)
否则:
打印".成功"
打印代理
if__name__=="__main__":
池=池()
代理=Getproxy()
代理.计数(2)
iplist=proxy.getiplist()
地图(代理.iptest,iplist)
proxy.dbclose()
关于高效IP代理池解决方案:深度挖掘MongoDB数据库潜力到此分享完毕,希望能帮助到您。
【高效IP代理池解决方案:深度挖掘MongoDB数据库潜力】相关文章:
2.米颠拜石
3.王羲之临池学书
8.郑板桥轶事十则
用户评论
这篇文章一定讲的是如何用MongoDB来管理IP代理!
有11位网友表示赞同!
终于有人想到用MongoDB存储了,之前一直感觉这种数据结构特别适合.
有17位网友表示赞同!
想知道这个IP代理池的性能如何,能不能满足高量访问的需求?
有16位网友表示赞同!
是不是可以用Mongodb自带的geo-spatial支持让代理分地区管理?
有5位网友表示赞同!
如果能做到自动刷新和校验,那就更棒了!这样能保证代理池的可用性。
有13位网友表示赞同!
MongoDB对大规模数据的处理能力怎么样呢?怕不是会出问题的...
有8位网友表示赞同!
这篇文章肯定会解释如何查询和管理IP代理资源,很期待看到实际代码的示例
有13位网友表示赞同!
希望作者能讲清楚什么类型的IP代理池是基于MongoDB搭建的!
有11位网友表示赞同!
我一直在寻找一种方法用数据库来组织我的IP代理信息,这个听起来很不错啊!
有5位网友表示赞同!
这篇文章肯定会介绍一些MongoDB的特性,以及如何将其应用于IP代理池管理。
有12位网友表示赞同!
我对MongoDB的查询功能感兴趣,不知道能不能快速找到特定类型的IP代理?
有18位网友表示赞同!
如果能把IP代理池部署到云平台上就更好了!方便扩展和维护
有8位网友表示赞同!
这篇文章是不是会介绍一些安全方面的考虑呢?毕竟代理池涉及到网络隐私...
有12位网友表示赞同!
我之前用过MongoDB,感觉它的文档管理功能很强大,这篇文章一定会让我有所收获!
有12位网友表示赞同!
这个IP代理池基于MongoDB数据库吗?我需要学习一下!
有7位网友表示赞同!
希望文章能讲解如何实现分布式存取和数据同步。
有11位网友表示赞同!
要是能写篇关于部署和维护的指南就好了,那样就能更好地实践了!
有15位网友表示赞同!
这个IP代理池有什么具体的应用场景呢?我很想知道!
有11位网友表示赞同!