使用库 paramiko
安装方法:
pip3 install paramiko
paramiko 用于实现sftp的文件上传(文件下载等操作参见文档)
使用urllib 抓取页面信息
import paramiko
import urllib.request
def ssh_connect(_host, _username, _password,_port):
try:
_ssh_fd = paramiko.SSHClient()
_ssh_fd.set_missing_host_key_policy(paramiko.AutoAddPolicy())
_ssh_fd.connect(_host, username=_username, password=_password,port=_port)
except Exception as e:
print('ssh ' + _username + "@" + _host + " " + str(e))
exit()
return _ssh_fd
def sftp_open(_ssh_fd):
return _ssh_fd.open_sftp()
def sftp_put(_sftp_fd, _put_from_path, _put_to_path):
return _sftp_fd.put(_put_from_path, _put_to_path)
def sftp_get(_sftp_fd, _get_from_path, _get_to_path):
return _sftp_fd.get(_get_from_path, _get_to_path)
def sftp_close(_sftp_fd):
_sftp_fd.close()
def ssh_close(_ssh_fd):
_ssh_fd.close()
def upload_file(_host, _username, _password,_port, _source, _target):
sshd = ssh_connect(_host, _username, _password,_port)
sftpd = sftp_open(sshd)
try:
sftp_put(sftpd, _source, _target)
except Exception as e:
print('ERROR: sftp_pusts -- ' + str(e))
sftp_close(sftpd)
ssh_close(sshd)
def get_page_str(_url):
# 在此处添加对页面数据进行处理的代码
fp = urllib.request.urlopen(_url)
mybytes = fp.read()
mystr = mybytes.decode("utf8")
fp.close()
return mystr
def write_file(_str, _file):
print(_str)
f = open(_file, 'w')
f.write(_str)
f.close()
# sftp地址
HOST_NAME = ''
# sftp端口 一般为22
HOST_PORT = 22
# sftp 用户名
HOST_USERNAME = ''
# sftp 密码
HOST_PASSWORD = ''
# 本地暂存文件地址
SOURCE_FILE = ''
# 上传的目标文件地址
TARGET_FILE = ''
# 抓取的目标地址
URL = 'http://www.cnblogs.com/'
def process():
write_file(get_page_str(URL), SOURCE_FILE)
upload_file(HOST_NAME, HOST_USERNAME, HOST_PASSWORD,HOST_PORT, SOURCE_FILE, TARGET_FILE)
# 运行程序
process()
可以配合bash来定时执行达到实时更新的效果