2015-04-20 2 views
0

Я пытаюсь загрузить необходимые PDF-файлы, связанные с исследователем.Не удается открыть загруженные файлы PDF

Но загруженные PDF-файлы нельзя открыть, указав, что файлы могут быть повреждены или в неправильном формате. В то время как другой URL-адрес, используемый в тесте, привел к нормальным файлам PDF. Есть ли у вас предложения?

import requests 
from bs4 import BeautifulSoup 


def download_file(url, index): 
    local_filename = index+"-"+url.split('/')[-1] 
    # NOTE the stream=True parameter 
    r = requests.get(url, stream=True) 
    with open(local_filename, 'wb') as f: 
     for chunk in r.iter_content(chunk_size=1024): 
      if chunk: # filter out keep-alive new chunks 
       f.write(chunk) 
       f.flush() 
    return local_filename 


# For Test: http://ww0.java4.datastructures.net/handouts/ 
# Can't open: http://flyingv.ucsd.edu/smoura/publications.html 

root_link="http://ecal.berkeley.edu/publications.html#journals" 

r=requests.get(root_link) 
if r.status_code==200: 
    soup=BeautifulSoup(r.text) 
    # print soup.prettify() 
    index=1 
    for link in soup.find_all('a'): 
     new_link=root_link+link.get('href') 
     if new_link.endswith(".pdf"): 
      file_path=download_file(new_link,str(index)) 
      print "downloading:"+new_link+" -> "+file_path 
      index+=1 
    print "all download finished" 
else: 
    print "errors occur." 
+0

Вы уже просмотрели содержимое файла? –

+0

На самом деле, я проверил ссылки для загрузки, они являются неправильным каталогом. Теперь я исправил этот вопрос, спасибо! Но исправление каталога означает, что эта программа не может использоваться вообще, что является проблемой, которую я пытаюсь понять. – ZoeZ

ответ

0

Ваш код имеет комментарий, говоря:

# Can't open: http://flyingv.ucsd.edu/smoura/publications.html

Выглядит как то, что не удается открыть это HTML-файл. Поэтому не удивительно, что читатель PDF будет жаловаться ...

Для любой реальной связи PDF, что у меня была проблема с я бы поступить следующим образом:

  1. Скачать файл с другим методом (wget, curl, браузер, ...).
    • Можете ли вы его загрузить? Или есть какие-то патчи с паролем, которые нужно перепрыгнуть?
    • Является ли загрузка быстрой + полной?
  2. Открывается ли он в программе просмотра PDF?
    • Если это так, сравните с файлом, который скачал ваш скрипт.
      • В чем отличия?
      • Не могли бы они быть вызваны вашим сценарием?
      • Нет ли различий в пределах первых нескольких сотен строк, но различия позже? Конец файла, являющегося связкой nul-байт? Тогда загрузка не завершилась ...
    • Если не так, сравните отличия. Если их нет, ваш скрипт не будет виноват. PDF может действительно быть поврежденным ...
  3. Как это выглядит при открытии в текстовом редакторе?
+0

Сценарий OP пытается загрузить все * ссылки * из этого файла ... – mkl

+0

Да, на самом деле я пытаюсь загрузить все связанные файлы PDF на этой странице root_link. – ZoeZ

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