我用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的某个标记,爬虫一轮一轮的跑,每一次都读取一下这个变量即可。