class MiniSpider(object):
def __init__(self):
self._request_queue = queue.Queue() # 带请求页面的队列
self._request_queue.put('http://jandan.net/ooxx') # 把第一个待访问页面入队
def run(self):
while True:
url = self._request_queue.get()
rsp = download(url)
new_urls = get_xpath(rsp, "//a") # 新的待访问的页面
map(self._request_queue.put, new_urls) # 放入队列
class MiniSpider(object):
def __init__(self):
self._request_queue = queue.Queue() # 带请求页面的队列
self._request_queue.put('http://jandan.net/ooxx') # 把第一个待访问页面入队
self._dedup_set = set() # 已经访问过得页面集合
def run(self):
while True:
url = self._request_queue.get()
rsp = download(url)
self._dedup_set.add(url) # 访问过了,加入
new_urls = get_xpath(rsp, "//a") # 新的待访问的页面
for new_url in new_urls:
if new_url not in self._dedup_set: # 如果还没有访问过
self._request_queue.put(new_url) # 放入队列
class MiniSpider(object):
def __init__(self):
self._request_queue = queue.Queue() # 带请求页面的队列
self._request_queue.put('http://jandan.net/ooxx') # 把第一个待访问页面入队
self._item_queue = queue.Queue()
self._dedup_set = set() # 已经访问过得页面集合
def run_request(self):
while True:
url = self._request_queue.get()
rsp = download(url)
self._dedup_set.add(url) # 访问过了,加入
new_urls = get_xpath(rsp, "//a") # 新的待访问的页面
for new_url in new_urls:
if new_url not in self._dedup_set: # 如果还没有访问过
self._request_queue.put(new_url) # 放入队列
items = get_xpath(rsp, "//img/@src") # 抽取出来的图片地址
map(self._item_queue, items)
def run_item(self):
while True:
image = self._item_queue.get()
download(image)
github.com/yifeikong/miniscrapy
python miniscrapy.py --spider ooxx.yml
本篇文章为 @ 21CTO 创作并授权 21CTO 发布,未经许可,请勿转载。
内容授权事宜请您联系 webmaster@21cto.com或关注 21CTO 公众号。
该文观点仅代表作者本人,21CTO 平台仅提供信息存储空间服务。
请扫描二维码,使用微信支付哦。