2016-08-30 6 views
0

私はcsvファイルからランディングページのURLのリストを繰り返し、ランディングページのすべてのPDFリンクをリストに追加してから、それを繰り返すスクリプトを作成しようとしています指定されたフォルダにPDFをダウンロードするリスト美しいスープで刻んだリンクからPDFをダウンロードする

私は最後のステップでちょっと立ち往生しています。すべてのPDF URLを取得できますが、個別にしかダウンロードできません。私はどのURLがそれぞれの独自のファイル名を持つように各URLを変更するためにディレクトリアドレスを修正するのが最善かどうかはわかりません。

助けていただけたら幸いです!

from bs4 import BeautifulSoup, SoupStrainer 
import requests 
import re 

#example url 
url = "https://beta.companieshouse.gov.uk/company/00445790/filing-history" 
link_list = [] 
r = requests.get(url) 
soup = BeautifulSoup(r.content, "lxml") 

for a in soup.find_all('a', href=True): 
    if "document" in a['href']: 
     link_list.append("https://beta.companieshouse.gov.uk"+a['href']) 

for url in link_list: 

    response = requests.get(url) 

    with open('C:/Users/Desktop/CompaniesHouse/report.pdf', 'wb') as f: 
     f.write(response.content) 

答えて

0

最も簡単な方法は、単に列挙使用して、各ファイル名に番号を追加することです:

for ind, url in enumerate(link_list, 1): 
    response = requests.get(url) 

    with open('C:/Users/Desktop/CompaniesHouse/report_{}.pdf'.format(ind), 'wb') as f: 
     f.write(response.content) 

しかし、それぞれのパスを想定することはsomne​​_filename.pdfで終了し、彼らはあなたがベース名を使用することができますユニークですより具体的な自体:

from os.path import basename, join 
for url in link_list: 
    response = requests.get(url) 
    with open(join('C:/Users/Desktop/CompaniesHouse", basename(url)), 'wb') as f: 
     f.write(response.content) 
関連する問題