2017-06-02 5 views
0

ダウンロードしたいファイルが13ページあり、何百ものファイルを手でダウンロードできないので、ダウンロード可能なすべてのファイルをpythonで入手する方法があるかどうかは疑問です。pythonでダウンロード可能なすべてのコンテンツをWebページからダウンロードするには?

ここにウェブサイトのURL:http://midkar.com/jazz/jazz_01.html ウェブサイトの各ページにはリンクのリストがあり、クリックするとダウンロードが開始されます。

私はこのような全13ページを経由するループのために書いた:

for i in range(1,14): 
    url = "http://midkar.com/jazz/jazz_0" + str(i) + ".html" 
    print(url) 

が、これはほとんどすべて私がやったと私はいくつかの助けをいただければ幸いです。

答えて

1

リクエストモジュールを使用してページを取得し、BeautifulSoupモジュールを使用してこれらのページのhtmlを解析して実際のリンクを取得し、それらのリンクを取得してリクエストモジュールで再度ダウンロードすることを学ぶべきです。

はあなたのために全体のコードを書くが、ここであなたが開始すべき場所であることはできません。

要求:

BeautifulSoup:https://www.crummy.com/software/BeautifulSoup/bs4/doc/

+1

はい、ありがとうございます。これは実際に私が探していたものですが、おそらく私は正しくフレーズを質問しませんでした。 – CodeMaker

+0

また、['urllib2.request'](https://docs.python.org/2/library/urllib2.html)モジュールを使用することもできます。これは[' urllib.request'](https:// docs。 python.org/3/library/urllib.request.html)をPython3で実行します。 –

0

あなたはBeatutifulsoupとシンプルなWebクローラーを書くことができますし、リクエスト。

from bs4 import BeautifulSoup 
import requests 

for i in range(1,14): 
    url = "http://midkar.com/jazz/jazz_0" + str(i) + ".html" 
    page = requests.get(url).content 
    soup = BeautifulSoup(page, 'html5lib') 
    # find all links on page 
    links = soup.find_all('a', href=True) 
    for link in links: 
     # build absolute url 
     link_url = requests.compat.urljoin(url, link['href']) 
     if link_url.endswith('.mid'): 
      # download midi file and write it to a local file 
      filename = link_url.split('/')[-1] 
      with open(filename, 'wb') as midifile: 
       midifile.write(requests.get(href).content) 
       print(filename)