最近打算寫乙個爬蟲去爬取招聘**的招聘資訊,在經過一周的python基本學習後,初步打算使用python進行爬蟲的開發。在初步接觸後,本打算使用分布式結構進行爬取作業,但是卻在測試過程中,發現一些問題。先貼上我寫的測試用例
首先參照了官方文件的例子
master.py
worker_1.py#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from multiprocessing.managers import basemanager
import queue
queue = queue.queue()
class
queuemanager
(basemanager):
pass
queuemanager.register('get_queue',callable=lambda : queue)
m = queuemanager(address=('127.0.0.1',50000),authkey=b'abracadabra')
s = m.get_server()
s.serve_forever()
worker_2.py#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from multiprocessing.managers import basemanager
import queue
class
queuemanager
(basemanager):
pass
queuemanager.register('get_queue')
m = queuemanager(address=('127.0.0.1',50000),authkey=b'abracadabra')
m.connect()
queues = m.get_queue()
queues.put('測試')
最後的結果是在worker_2.py中可以列印出,worker_1.py的 「測試」 字串。from multiprocessing.managers import basemanager
import queue
class
queuemanager
(basemanager):
pass
queuemanager.register('get_queue')
m = queuemanager(address=('127.0.0.1',50000),authkey=b'abracadabra')
m.connect()
queue = m.get_queue()
print(queue.get())
但是這種寫法有個明顯的問題,在主節點master.py 中,是阻塞式也就是說執行了s.serve_forever()
之後,該指令碼中的其它程式也就無法正常執行。我理解,該類可以看做乙個連線不同程序之間的橋梁。雖然master.py 中也可以通過以下方法傳遞值:
但是這樣操作,依然不能解決我需要在master.py進行一些分發操作的需求from multiprocessing import process, queue
from multiprocessing.managers import basemanager
import queue
class
worker
(process):
def__init__
(self, q):
self.q = q
super(worker, self).__init__()
defrun(self):
self.q.put('local hello')
if __name__ == '__main__':
queues = queue()
w = worker(queues)
w.start()
myq = queue.queue()
class
queuemanager
(basemanager):
pass
queuemanager.register('get_queue', callable=lambda: queues)
queuemanager.register('get_myq', callable=lambda: myq)
m = queuemanager(address=('127.0.0.1', 50000), authkey=b'abracadabra')
s = m.get_server()
s.serve_forever()
所以我只能暫緩使用該種方式,以期待通過後面學習或者博友們提供好方法。
附上乙個錯誤解決方法:
這是因為在子程序中又建立了程序引起,解決方法為在ifname==』main』主程序進行建立程序操作
python 3 5 爬蟲日記2
from urllib import request 輸入正規表示式模組 import re page 1 url r request.request url r.add header user agent abc 讀取首頁原碼並命名為content content request.urlopen ...
關於爬蟲的一些東西
這幾天在寫乙個爬蟲,實際上整個過程和思路很簡單,難點在於繁雜的格式處理和一些未知的小問題,還有對python不太熟悉.基本上是邊學邊寫.記錄一些過程中值得記住的東西.關於python的 1.檔案的開頭要用 coding utf 8 2.建立資料夾可以要import os os.mkdir r new...
關於爬蟲的一些記錄
普通的文字型爬蟲就不說了,這裡主要說一下在爬取有js指令碼和驗證碼的一些內容時,遇到的坑。作業系統的選擇 由於爬蟲 資訊分析ai web介面都部屬在centos上,且系統部署的最優選擇還是centos。爬蟲方面,文字型爬蟲是基礎,模擬瀏覽器也是必須的。目前模擬瀏覽器就三樣,firefox chrom...