andelf fledna Feather

显示标签为“web”的博文。显示所有博文
显示标签为“web”的博文。显示所有博文

2009年6月21日星期日

ZMI中对象简单介绍

ZMI中对象简单介绍
对象名说明
portal_porperties站点属性设置。site_properties:站点属性,navtree_properties:导航属性
portal_action站点操作项
portal_controlpanel站点控制面板操作项
portal_actionicons站点操作项图标
portal_type内容类型管理
portal_factory内容创建控制
content_type_registry内容和文件映射
portaL_registry用户注册
portal_membership用户管理
acl_users用户源
portal_memberdata用户属性
portal_skin站点皮肤管理
portal_setup站点设置管理
portal_catalog索引维护
portal_migration站点升级
portal_atctATcontentType升级
mimetype_registry文件类型注册表
portal_transform内容转换
portal_discussion站点评注引擎
portal_quickinstaller安装和卸载产品
error_log错误日志
MailHost邮件设置

2009年2月22日星期日

用 python 暴百度贴吧

当然, 只是原型, 但基本功能有了. 目前在刷回帖的时候会有乱码, 编码问题需要解决. 成果展示: ---------------------------------------------------------------


#!/usr/bin/python
# -*- coding:utf-8 -*-

import urllib2
import urllib
import socket
import libxml2dom
import Image
import time



def domToQueryDict(doc, formIndex=0):
   data = {}
   form = doc.getElementsByTagName('form')[formIndex]
   nodes = form.getElementsByTagName('input')
   nodes.extend(form.getElementsByTagName('textarea'))
   for node in nodes:
       if node.hasAttribute('name') and node.getAttribute('type')!= u"submit":
           if node.hasAttribute('value'):
               data[node.getAttribute('name')] = \
                   node.getAttribute('value').encode('gbk', 'ignore')
           else:
               data[node.getAttribute('name')] = ""
   return data

             
cookie_handler = urllib2.HTTPCookieProcessor()
opener = urllib2.build_opener(cookie_handler)
urllib2.install_opener(opener)

# 获得登陆数据
url = "http://passport.baidu.com/?" + \
   "login&tpl=tb&u=http%3A//tieba.baidu.com/f%3Fkw%3Dpython"
doc = libxml2dom.parseString(opener.open(url).read(), html=1,
                            htmlencoding='gbk')
data = domToQueryDict(doc)

# 用户名/密码设置
data[u'username'] = '用户名'
data[u'password'] = '密码'

# 验证图片处理
veryfyPic = opener.open("https://passport.baidu.com/?verifypic")
picfile = file("pic.jpg", 'wb')
picfile.write(veryfyPic.read())
picfile.close()
im = Image.open("pic.jpg")
im.show()
data["verifycode"] = raw_input("What you see?").strip()

# 登陆页面
data = urllib.urlencode(data)
b = opener.open(url, data)  # here login OK
print b.read()
print '-'*20

for i in xrange(20):
   # 分析主页数据
   # url = "http://tieba.baidu.com/f?kz=543530949"
   b = opener.open("http://tieba.baidu.com/f?kw=python&t=1")
   frontpage = b.read()
   doc = libxml2dom.parseString(frontpage, html=1, htmlencoding='gbk')
             
   data = domToQueryDict(doc, 1)
   print "*",
   # 发贴标题及内容
   data[u'ti'] = "Fledna 自爆专用~!!!!!!!!!!!!!!"+str(i)
   data[u'co'] = "For Test only. " + str(i)
   print data[u'ti']
   data = urllib.urlencode(data)
   post_url = "http://tieba.baidu.com/f"
   b = opener.open(post_url, data)
   time.sleep(20)

2008年9月30日星期二

2008年9月18日星期四

使用PyWin32将CherryPy应用安装为服务

CherryPy + PyWin32 应用 老版本的 cherrypy
# coding=cp936 import cherrypy import win32serviceutil import win32service import win32event
class HelloWorld: """ 请求句柄例子 """ # 暴露对象 @cherrypy.expose def index(self): # 只做测试用,所以只返回简单内容 return "Hello world!"
class MyService(win32serviceutil.ServiceFramework): """NT 服务""" # 服务名 _svc_name_ = "CherryPyService" # 服务显示名称 _svc_display_name_ = "CherryPy Service"
def __init__(self, args): win32serviceutil.ServiceFramework.__init__(self, args) # 创建一个事件 self.stop_event = win32event.CreateEvent(None, 0, 0, None)
def SvcDoRun(self): cherrypy.root = HelloWorld() # 更新配置,当使用配置文件时,必须为一个绝对路径 cherrypy.config.update({ 'global':{ 'server.socketPort' : 81, 'server.environment': 'production', 'server.logToScreen': False, 'server.log_file': 'e:\\edit\\log.txt', 'server.log_access_file': 'e:\\edit\\log.txt', 'autoreload.on' : False, 'server.logTracebacks' : True } }) # 设置 initOnly=True cherrypy.server.start(initOnly=True) win32event.WaitForSingleObject(self.stop_event, \ win32event.INFINITE) def SvcStop(self): self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING) cherrypy.server.stop() win32event.SetEvent(self.stop_event)
if __name__ == '__main__': win32serviceutil.HandleCommandLine(MyService)
P.S.假设文件名为mysrv.py 则
x:\> mysrv.py --显示所有可用命令选项
mysrv.py install --安装服务
mysrv.py start --启动服务
mysrv.py stop --停止服务
mysrv.py restart --就是restart,重启,更新代码用
mysrv.py remove --删除服务
再P.S.测试时候一定要注意防火墙,服务是自动拦截的(pythonservice.exe).偶就在这里出问题了~嘻嘻
用到的路径必须全为绝对路径,静态目录也是
安装好服务后,也可以使用net start/stop CherryPyService 来管理