百度空间的搬家工具不能访问了,只能自己动手搬家.昨天打算用html post的方法进行,最后在验证码的问题上停下了.没办法,只能通过更低级的办法,对IE进行操作的方法进行.这里要用到PAMIE库,我用的是python2.6+pamie2,当然你可以根据自己的版本进行选择.PAMIE可以非常方便的控制IE浏览器,其初衷是用来进行web自动化测试的.整个程序在给博客的内容编辑框处停下了,因为不好通过其id/name获取这个第三方插件的标识,最后,用了另一个办法,才算最终搞定.
需要注意的地方:
1).C:\\Users\\riverbird\\Downloads\\Pam\\backup-20090401230236.xml,这是我备份的blogbus博客的xml文件;
2).riverbird/creat/blog/,请将riverbird换成你的空间用户名.
3).C:\\Users\\riverbird\\Downloads\\Pam\\tab.exe,这个tab.exe是我写的一个小程序,主要有两个作用,一是发tab键,将焦点从标题栏转到编辑框,另一个是发ctrl + v消息,就是粘贴了.
4).你大可不必用这个tab.exe程序,更好的替代品是用纯python写的WATSUP和sendkeys,其网站分别为:和里面有python的替代方案.
5).百度空间里面如果发贴过于频繁,他会提示不能再发了.我将时间设为2分钟左右发贴,证明是可行的.
#coding:utf-8
from cPAMIE import PAMIE
import time
import win32clipboard as w
import win32con
import os
#import xml.dom.minidom
from xml.dom import minidom
obj_ie = PAMIE()
def send_text(aString):
w.OpenClipboard()
w.EmptyClipboard()
#w.SetClipboardData(win32con.CF_TEXT,aString)
w.SetClipboardData(win32con.CF_UNICODETEXT,aString)
#w.SetClipboardText(aString)
w.CloseClipboard()
time.sleep(2)
os.system("C:\\Users\\riverbird\\Downloads\\Pam\\tab.exe")
time.sleep(2)
#w.CloseClipboard()
def login(ie):
ie.navigate("")
#time.sleep(5)
ie.textBoxSet("username","xxx")
ie.textBoxSet("password","xxx")
ie.buttonClick('Submit')
def post(ie,title,content):
ie.navigate("riverbird/creat/blog/")
ie.textBoxSet("spBlogTitle",title)
#ie.textBoxSet("spBlogText",content)
send_text(content)
ie.buttonClick("tj")
def get_title_content(ie):
dom = minidom.parse("C:\\Users\\riverbird\\Downloads\\Pam\\backup-20090401230236.xml")
root = dom.documentElement
nodes = root.getElementsByTagName("Log")
rc = ""
lst_title = []
lst_content = []
n = 0
for node in nodes:
title_node = node.getElementsByTagName("Title")[0]
content_node = node.getElementsByTagName("Content")[0]
lst_title.append(title_node.firstChild.data)
lst_content.append(content_node.firstChild.data)
print "title:",lst_title[n]
print "content:",lst_content[n]
print '---------------'
if n >= 47:
post(ie,title_node.firstChild.data,content_node.firstChild.data)
time.sleep(2)
n = n + 1
#if node.nodeType in ( node.TEXT_NODE,node.CDATA_SECTION_NODE):
login(obj_ie)
#post(obj_ie)
get_title_content(obj_ie)
|
|
文件: | tab.zip |
大小: | 267KB |
下载: | 下载 |
|
阅读(1990) | 评论(0) | 转发(0) |