2016-01-27 41 views
0

需要使用Python從site下載文件。 使用JS函數生成文件列表。從javascript函數獲取文件

//<![CDATA[ 




$(document).ready(function(){ 
     var url='/portalfront/portal/list/list-files.php'; 
     var data={paths:'/portalfront/nedlast/no/markets/analyser-rapporter/norske/anbefalte-aksjer/|usename=Anbefalte aksjer|count=52'}; 

     var myElement=Portal.getLocalizedString("PostError") || 'error'; 
     jQuery.ajax({ 
      url:url, 
      data:data, 
      dataType: "json", 
      success: function(jdata) {   
       if(jdata.status.match(/ok/i)){ 
        myElement=''; 
        $.each(jdata.data, function(messageIndex, message) { 
         myElement+='<p class="moduleItemPdf"><a target="_blank" href="'+message['path']+'" class="moduleItem">'+message['date']+' '+message['name']+'</a></p>'; 
        });    
       } 
      }, 
      complete:function(xhr,status) { 
       var _id="div#"+"anbefalte-aksjer-arkiv"; 
       $(_id).append(myElement); 
       if($(_id).closest('div#column_right').length==0){ 
        var e=parseInt($(_id).height()); 
        var _height=40+(0 * 20); 
        $(_id).closest('.moduleWhite').height(e+_height); 
        Portal.alignModulesVertically(); 
       } 
      } 
     }); 
}); 



      //]]> 

而poroblem是我不熟悉JS。 我想,我必須使用硒這個任務,我認爲它應該LOOL這樣的:

url = 'https://www.dnb.no/bedrift/markets/analyser/arkiv/anbefalteaksjer.html' 
wd = webdriver.Firefox() 
wd.get(url) 
links_script = wd.execute_script(js script) 
  1. 我應該把在功能?
  2. 我應該得到什麼?它會是HTML嗎?
  3. 如何下載此文件?我的意思是我怎樣才能收到它的鏈接?

回答

0

您可以使用Selenium獲取文件列表,然後使用Python下載它。 你可以試試下面的代碼嗎?

代碼:

def download_file(url): 
    local_filename = url.split('/')[-1] 
    r = requests.get(url, stream=True) 
    with open(local_filename, 'wb') as f: 
     for chunk in r.iter_content(chunk_size=1024): 
      if chunk: 
       f.write(chunk) 
    return local_filename 

wd.get('https://www.dnb.no/bedrift/markets/analyser/arkiv/anbefalteaksjer.html') 
time.sleep(5) 

pdfLinks = wd.find_elements_by_css_selector('.moduleItemPdf > a') 

for linkElement in pdfLinks: 
    filename=download_file(linkElement.get_attribute("href")) 
    print(filename) 



time.sleep(5) 
wd.quit() 
+0

Buaban,不幸的是,這是行不通的。 – GiveItAwayNow

+0

我剛剛用完整的源代碼更新了這個答案。請注意,您必須在此代碼之前創建Web驅動程序'wd'。 – Buaban