2014-11-05 2 views
-3

У меня есть задача ежедневно загружать файл определения вируса McAfee из локального сайта загрузки. Имя файла меняется каждый день. Путь к сайту загрузки «http://download.nai.com/products/licensed/superdat/english/intel/7612xdat.exe» Этот ID 7612 будет меняться каждый день на что-то другое, поэтому я не могу его жестко записать. Я должен найти способ либо переименовать имя файла, прежде чем предоставлять его как аргумент или т. Д. На сайте stackoverflow я нашел чей-то скрипт, который будет работать для меня, если кто-нибудь сможет советовать, как обращаться с изменением имени файла. Вот скрипт, который я собираюсь использовать:Загрузите файл из Интернета при изменении имени файла каждый раз

def download(url): 
    """Copy the contents of a file from a given URL 
    to a local file. 
    """ 
    import urllib 
    webFile = urllib.urlopen(url) 
    localFile = open(url.split('/')[-1], 'w') 
    localFile.write(webFile.read()) 
    webFile.close() 
    localFile.close() 

if __name__ == '__main__': 
    import sys 
    if len(sys.argv) == 2: 
     try: 
      download(sys.argv[1]) 
     except IOError: 
      print 'Filename not found.' 
    else: 
     import os 
     print 'usage: %s http://server.com/path/to/filename' % os.path.basename(sys.argv[0]) 

Может кто-нибудь посоветовать мне? Заранее благодарен

+0

Не совпадают ли имена файлов? –

+3

просто просмотрите эту страницу http://download.nai.com/products/licensed/superdat/english/intel/, ищите расширение exe и загружайте его – Hackaholic

+0

Не знаю, являются ли имена файлов последовательными. -Hackaholic, мне нравится идея зашифровать страницу, я могу найти последнюю и загрузить. Проблема в том, что я не знаю, как перечислить содержимое этой страницы с помощью python, можете ли вы посоветовать? спасибо – susja

ответ

0

Его двухэтапный процесс. Сначала очистите индексную страницу, ища файлы. Во-вторых, возьмите последние и загрузите

import urllib 
import lxml.html 
import os 
import shutil 

# index page 
pattern_files_url = "http://download.nai.com/products/licensed/superdat/english/intel" 
# relative url references based here 
pattern_files_base = '/'.join(pattern_files_url.split('/')[:-1]) 

# scrape the index page for latest file list 
doc = lxml.html.parse(pattern_files_url) 
pattern_files = [ref for ref in doc.xpath("//a/@href") if ref.endswith('xdat.exe')] 
if pattern_files: 
    pattern_files.sort() 
    newest = pattern_files[-1] 
    local_name = newest.split('/')[-1] 
    # grab it if we don't already have it 
    if not os.path.exists(local_name): 
     url = pattern_files_base + '/' + newest 
     print("downloading %s to %s" % (url, local_name)) 
     remote = urllib.urlopen(url) 
     print dir(remote) 
     with open(local_name, 'w') as local: 
      shutil.copyfileobj(remote, local, length=65536) 
+0

-tdelany, я очень ценю вашу помощь. Он работал идеально для меня. Спасибо – susja

Смежные вопросы