2015-04-15 12 views
5

Python'da bir PDF Web Kazıyıcı yapmak için çalışıyorum. Esasen, ders notlarımdan PDF'lerde bulunan tüm ders notlarını kazımak istiyorum. Bir URL girmek ve PDF'leri almak ve dizüstü bilgisayarımdaki bir dizine kaydetmek istiyorum. Birkaç öğreticiye baktım ama bunu yapmak için nasıl gideceğime emin değilim. StackOverflow'taki soruların hiçbiri bana da yardım etmiyor. İşte PDF'leri Kazıma Linklerden [Python] Nasıl İndirilir?

Bugüne kadar ne var: Başlangıçta

import requests 
from bs4 import BeautifulSoup 
import shutil 

bs = BeautifulSoup 

url = input("Enter the URL you want to scrape from: ") 
print("") 

suffix = ".pdf" 

link_list = [] 

def getPDFs():  
    # Gets URL from user to scrape 
    response = requests.get(url, stream=True) 
    soup = bs(response.text) 

    #for link in soup.find_all('a'): # Finds all links 
    # if suffix in str(link): # If the link ends in .pdf 
     #  link_list.append(link.get('href')) 
    #print(link_list) 

    with open('CS112.Lecture.09.pdf', 'wb') as out_file: 
     shutil.copyfileobj(response.raw, out_file) 
    del response 
    print("PDF Saved") 

getPDFs() 

, ben PDF'lere tüm bağlantıları kazanılmış vardı, ancak bunları indirmek için nasıl bilmiyordu; Bunun için kod şimdi yorumlanmıştır.

Şimdi sadece bir PDF indirmeye çalıştığım noktaya geldim; ve bir PDF indirilir, ancak bir 0 KB dosyasıdır. o herhangi bir kullanım varsa bu oturum açılmadan gerektirmeyen bir şey olursa

, Python 3.4.2

cevap

6

kullanıyorum, sen urlretrieve() kullanabilirsiniz: Bunun için

from urllib.request import urlretrieve 

for link in link_list: 
    urlretrieve(link) 
+1

teşekkür ederiz. OP'ye yardımcı olmasa bile, yeni bir Python işlevini öğrendim. :) –

+0

Harika. Bu mükemmel çalışıyor! Yine de bir takip sorusu; Dosyaları hangi dizinde kaydedeceğimi nasıl seçerim? – freddiev4

+1

@ FreddieV4, ikinci bağımsız değişkende dosyanın tam yolunu belirtebilir, bkz. Http://stackoverflow.com/questions/6373094/how-to-download-a-file-to-a-specific-path- in-the-sunucu piton. Teşekkürler. – alecxe

İlgili konular