码迷,mamicode.com
首页 > 编程语言 > 详细

python分布式爬虫实践

时间:2018-05-08 14:20:32      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:格式   multi   import   style   实战   项目实战   inux   定义   col   

近期阅读了范传辉的Python爬虫开发与项目实战一书,对其第七章的分布式爬虫进行实操

遇到自己环境上代码跑不通的问题,经一番功夫,发现主要是由以下几点造成的:

书中环境:python2.7,linux

本地环境:python3.4,window

1.文中导入模块为import Queue,py3中应该为from multiprocessing import Queue

2.window环境下lambda无法被序列化,要使用自定义函数,该自定义函数需要放在代码开头,如下;

url_q=Queue()
result_q=Queue()
def get_url_q():
    global url_q
    return url_q
def get_result_q():
    global result_q
    return result_q
class NodeManager(object):
    def start_manager(self,url_q,result_q):
        BaseManager.register(get_task_queue,callable=get_url_q)
        BaseManager.register(get_result_queue,callable=get_result_q)

3.window环境下BaseManager函数address传参为‘’的话不代表本机,linux才代表本机,应明确写清本机地址,且py3下authkey传参应该编码转换,如下:

manager=BaseManager(address=(127.0.0.1,8001),authkey=baike.encode(utf-8))

4.另外实操中主要遇到的问题就是数据的编码格式的转换,编码格式不同会导致爬虫执行到某个步骤就一直暂停了(PS:我的是卡在解析网址后一直没动)

5.代码主要由两个窗口执行,其中NodeManager只用于启动进程,不输出,SpiderWork进程用于输出

python分布式爬虫实践

标签:格式   multi   import   style   实战   项目实战   inux   定义   col   

原文地址:https://www.cnblogs.com/hipth/p/8966784.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!