Как загрузить файлы с файлового сервера на основе веб-интерфейса с помощью Python Mechanize - PullRequest
4 голосов
/ 12 июля 2011

У меня есть ряд файлов на частном файловом сервере ftp, которые я пытаюсь загрузить с помощью mechanize.

Объекты механизированной связи имеют структуру

Link(base_url='http://myfileserver.com/cgi-bin/index.cgi', url='index.cgi?page=download&file=%2Fhome%2Fjmyfileserver%2Fpublic_html%2Fuser_data%2Fmycompany%2F.ftpquota', text='Download [IMG]', tag='a', attrs=[('href', 'index.cgi?page=download&file=%2Fhome%2Fjmyfileserver%2Fpublic_html%2Fuser_data%2Fmycompany%2F.ftpquota'), ('class', 'ar')])

Это в основном соответствует ссылке, где значок файла связан с файлом

Я новичок в механизации.
Но как мне скачать связанный файл можно получить у

urlparse.urljoin(base_url , url)

, который объединяет два, чтобы получить:

http://myfileserver.com/cgi-bin/index.cgi?page=download&file=%2Fhome%2Fjmyfileserver%2Fpublic_html%2Fuser_data%2Fmycompany%2F.ftpquota

Я не знаю, как поступить.

Мой необработанный код

import mechanize
import subprocess
import urlparse
br = mechanize.Browser()
br.open("http://myfileserver.com/cgi-bin/index.cgi")
br.select_form(nr=0)
br['login'] = "mylogin"
br['password'] = "mypassword"
br.submit()
#print dir(br)
myfiles = []
for alink in br.links():
    print alink
    myfiles.append(alink)

def downloadlink(l):
    print " Trying to download", l.url.split("%2F")[-1]
    f=open(l.url.split("%2F")[-1],"w") 
    myurl = urlparse.urljoin(l.base_url,l.url)
    print myurl
    # Dont know how to proceed



for linkobj in myfiles:

    if "sca" in linkobj.url:
        #br.follow_link(text='[IMG]', nr=0)
        downloadlink(linkobj)

Ответы [ 2 ]

5 голосов
/ 12 июля 2011

Вы можете попробовать с:

for index, linkobj in enumerate(myfiles):
    if "sca" in linkobj.url:
        resp = br.follow_link(text='Download [IMG]',nr=0)
        content = resp.read()
        with open('output%s.txt' % index, 'w') as fo:
           fo.write(content)
0 голосов
/ 12 июля 2011

Если у вас есть ftp-сервер, механизация не является способом загрузки вашего файла, вам следует посмотреть ftplib . Этот учебник должен помочь вам.

...