2015-04-27 25 views
1

我正在寫一個腳本,它使用正則表達式來查找頁面上的pdf鏈接,然後下載所述鏈接。該腳本在我的個人目錄中正確運行並命名文件,但它並未下載完整的pdf文件。 PDF文件被牽引,只有19KB,損壞的PDF格式,當他們要approxemtely 15MB使用python下載pdfs?

import urllib, urllib2, re 

url = 'http://www.website.com/Products' 
destination = 'C:/Users/working/' 
website = urllib2.urlopen(url) 
html = website.read() 
links = re.findall('.PDF">.*_geo.PDF', html) 

for item in links: 
    DL = item[6:] 
    DL_PATH = url + '/' + DL 
    SV_PATH = destination + DL 
    urllib.urlretrieve(DL_PATH, SV_PATH) 

url變量鏈接到一個網頁鏈接到所有的PDF文件。當你點擊pdf鏈接時,你會看到「www.website.com/Products/NorthCarolina.pdf」,它在瀏覽器中顯示PDF。我不知道是否因爲這個,我應該使用一個不同勢蟒蛇方法或模塊

+0

你有沒有在你下載,看文件看他們實際上是PDF文件,還是他們的網頁有消息(例如試圖重定向或其他HTTP狀態)? –

+0

那19K是什麼?它可以是嵌入鏈接的下載頁面。 – tdelaney

+0

那19k,下載的是損壞的PDF文件 – Groovietunes

回答

5

你可以嘗試這樣的事:

import requests 


links = ['link.pdf'] 
for link in links: 
    book_name = link.split('/')[-1] 
    with open(book_name, 'wb') as book: 
     a = requests.get(link, stream=True) 

     for block in a.iter_content(512): 
      if not block: 
       break 

      book.write(block) 
+1

謝謝!我的一個愚蠢的錯誤。上面的代碼現在和你的一樣工作。帶有pdf鏈接的網頁的路徑與pdf的路徑不同。他們略有不同。請求模塊中的錯誤報告幫助我意識到這一點! – Groovietunes