python分布式爬虫实践

Posted hipth

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python分布式爬虫实践相关的知识,希望对你有一定的参考价值。

近期阅读了范传辉的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分布式爬虫实践的主要内容,如果未能解决你的问题,请参考以下文章

scrapy按顺序启动多个爬虫代码片段(python3)

scrapy主动退出爬虫的代码片段(python3)

求编程大佬 Python 爬虫

Python分布式爬虫必学框架Scrapy打造搜索引擎 ??

Python爬虫实践 —— 5.便民生活网电话号码爬取

Python爬虫实践--爬取网易云音乐