2017-06-02 96 views
0

有一个网站有我想要下载的13页midi文件,我不能手动下载数百个文件,所以我想知道是否有任何方法让python获得所有可下载的文件。如何使用python从网页下载所有可下载的内容?

这里是网站的网址:http://midkar.com/jazz/jazz_01.html 网站上的每个页面都有一个链接列表,当你点击的时候它们开始下载。

我写了一个for循环要经过所有13页这样的:

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

但是这是几乎所有我已经做了,我希望得到一些帮助。

回答

1

您应该学会使用requests模块来获取页面,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。 Python3中的python.org/3/library/urllib.request.html)。 –

0

你可以写与Beatutifulsoup一个简单的网络爬虫和要求。

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)