我用python写了个爬虫脚本,怎么通过web 方式控制开始,暂停呢?
闭关修行中......
樓主的問題可以分成兩個部分。一是找到適合的 IPC(進程間通訊)方式來實現控制腳本的目的,二是找一個合適的web framework來寫一個好用的web UI。
一的話,IPC有很多種方式,樓上的signal/env/process都是不錯的方式。我也很推薦socket,畢竟這也是非常常見的方式。 library方面,我推薦Twisted或ZeroMQ。前者提供了多種IPC方式,不過學起來略有點慢。後者提供了基於socket的IPC方式,非常靈活。 二的話,Django/bottle/web.py等等等等,隨便抓一個來用就是了。
Twisted
ZeroMQ
Django
bottle
web.py
1. 你可以透過發 signal 嘛http://docs.python.org/2/library/sign... 2. 透過環境變量,透過 python 修改環境變數 ,然後在爬蟲中判斷標識 3. 透過 subprocess 呼叫腳本,關閉時殺掉進程 4. 用 scrapy 改寫下,似乎是支持透過 web 去控制的。 http://doc.scrapy.org/en/latest/topic...
我之前自己嘗試過寫過一個框架,其實也就是透過python的os.popen執行shell 在每個需要web控制腳本啟動的機器上都寫一個tornado的API服務,然後有一個前台頁面,API可以查詢指定腳本(實質是得到腳本名的參數,然後python執行shell命令——ps aux | grep腳本名稱)接著讀取結果返回前台頁面,然後會得到對應的進程id,再透過傳遞進程ID參數去執行kill操作,也可以傳遞指令參數,然後tornado處理。
這樣做很懶,但是安全性不好。
最偷懶的方法,寫個cgi,cgi內容是執行一段bash腳本,cgi可以用perl python php寫都行
比較建議用變數的方式控制,變數可以是爬蟲內部的,也可以是檔案或是db的某個標記,爬蟲一輪一輪的跑,每一次都讀取這個變數即可。
樓主的問題可以分成兩個部分。一是找到適合的 IPC(進程間通訊)方式來實現控制腳本的目的,二是找一個合適的web framework來寫一個好用的web UI。
一的話,IPC有很多種方式,樓上的signal/env/process都是不錯的方式。我也很推薦socket,畢竟這也是非常常見的方式。 library方面,我推薦
Twisted
或ZeroMQ
。前者提供了多種IPC方式,不過學起來略有點慢。後者提供了基於socket的IPC方式,非常靈活。二的話,
Django
/bottle
/web.py
等等等等,隨便抓一個來用就是了。1. 你可以透過發 signal 嘛
http://docs.python.org/2/library/sign...
2. 透過環境變量,透過 python 修改環境變數 ,然後在爬蟲中判斷標識
3. 透過 subprocess 呼叫腳本,關閉時殺掉進程
4. 用 scrapy 改寫下,似乎是支持透過 web 去控制的。
http://doc.scrapy.org/en/latest/topic...
我之前自己嘗試過寫過一個框架,其實也就是透過python的os.popen執行shell
在每個需要web控制腳本啟動的機器上都寫一個tornado的API服務,然後有一個前台頁面,API可以查詢指定腳本(實質是得到腳本名的參數,然後python執行shell命令——ps aux | grep腳本名稱)接著讀取結果返回前台頁面,然後會得到對應的進程id,再透過傳遞進程ID參數去執行kill操作,也可以傳遞指令參數,然後tornado處理。
這樣做很懶,但是安全性不好。
最偷懶的方法,寫個cgi,cgi內容是執行一段bash腳本,cgi可以用perl python php寫都行
比較建議用變數的方式控制,變數可以是爬蟲內部的,也可以是檔案或是db的某個標記,爬蟲一輪一輪的跑,每一次都讀取這個變數即可。