2016-08-19 9 views
0

私はどのようにこれをやっているのでしょうか?URLからすべてのcsvファイルをダウンロードしてください

このような何かが動作するはず
from bs4 import BeautifulSoup 
import requests 
url = requests.get('http://www.football-data.co.uk/englandm.php').text 
soup = BeautifulSoup(url) 
for link in soup.findAll("a"): 
    print link.get("href") 
+0

あなたは、1ページからリンクされたすべてのcsvファイルをダウンロードしたいと思っていますか?私はすべてのリンクを繰り返し、ファイル拡張子をチェックすることは悪い考えではないと思います。 – martijnn2008

答えて

0

from bs4 import BeautifulSoup 
from time import sleep 
import requests 


if __name__ == '__main__': 
    url = requests.get('http://www.football-data.co.uk/englandm.php').text 
    soup = BeautifulSoup(url) 
    for link in soup.findAll("a"): 
     current_link = link.get("href") 
     if current_link.endswith('csv'): 
      print('Found CSV: ' + current_link) 
      print('Downloading %s' % current_link) 
      sleep(10) 
      response = requests.get('http://www.football-data.co.uk/%s' % current_link, stream=True) 
      fn = current_link.split('/')[0] + '_' + current_link.split('/')[1] + '_' + current_link.split('/')[2] 
      with open(fn, "wb") as handle: 
       for data in response.iter_content(): 
        handle.write(data) 
0

あなただけの[=のhref $ csvファイル。] 、あなたはCSSセレクタで行うことができますのhrefをフィルタリングする必要があります hrefの末尾が.csvになり、それぞれをベースURLに結合し、コンテンツをリクエストし、最後にコンテンツを書きます:

from bs4 import BeautifulSoup 
import requests 
from urlparse import urljoin 
from os.path import basename 

base = "http://www.football-data.co.uk/" 
url = requests.get('http://www.football-data.co.uk/englandm.php').text 
soup = BeautifulSoup(url) 
for link in (urljoin(base, a["href"]) for a in soup.select("a[href$=.csv]")): 
    with open(basename(link), "w") as f: 
     f.writelines(requests.get(link)) 

これは5つのファイル、E0.csv、E1.csv、E2.csv、E3.csv、E4.csvのすべてのデータが入っています。

関連する問題