python抓取taobao ip数据库
准备
由于taobao提供了rest api,所以这次就不用scrapy了,改用unirest
pip install unirest
代码
unirest是异步请求的(多线程),所以提供一个callback,但是要是有额外的参数需要传入,用全局变量的话会产生问题。
具体的实现可以根据纯真IP数据库的IP段来查询,单台机器抓取的话估计2~3天的样子,下面是单个IP段抓取的实现代码:
# encoding: utf-8
import time, unirest
def pp(extra):
# 其实这种做法和js很像,用一个闭包限制变量的作用域
def p(resp):
print(extra)
# 在这里做数据的处理和储存
return p
def main():
r = ['192.9.201.0', '192.9.201.255'];
unirest.get('http://ip.taobao.com/service/getIpInfo.php', headers = {}, params = {'ip': r[0]}, auth = (), callback = pp(r))
# taobao访问限制:为了保障服务正常运行,每个用户的访问频率需小于10qps。
time.sleep(.5)
if __name__ == '__main__':
main()