關於Python35爬蟲的一些個人想法 我是菜鳥

2021-07-08 12:36:16 字數 2695 閱讀 2694

最近打算寫乙個爬蟲去爬取招聘**的招聘資訊,在經過一周的python基本學習後,初步打算使用python進行爬蟲的開發。在初步接觸後,本打算使用分布式結構進行爬取作業,但是卻在測試過程中,發現一些問題。先貼上我寫的測試用例

首先參照了官方文件的例子

master.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_1.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

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())

最後的結果是在worker_2.py中可以列印出,worker_1.py的 「測試」 字串。

但是這種寫法有個明顯的問題,在主節點master.py 中,是阻塞式也就是說執行了s.serve_forever()之後,該指令碼中的其它程式也就無法正常執行。我理解,該類可以看做乙個連線不同程序之間的橋梁。雖然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()

但是這樣操作,依然不能解決我需要在master.py進行一些分發操作的需求

所以我只能暫緩使用該種方式,以期待通過後面學習或者博友們提供好方法。

附上乙個錯誤解決方法:

這是因為在子程序中又建立了程序引起,解決方法為在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...