如何使用python从网页下载所有可下载内容?

时间:2017-06-02 22:56:05

标签: python

有一个网站有13页midi文件,我想下载,我无法手动下载数百个文件,所以我想知道是否有任何方法可以使用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)

但这几乎就是我所做的一切,我希望得到一些帮助。

2 个答案:

答案 0 :(得分:1)

你应该学会使用请求模块获取页面,使用BeautifulSoup模块通过解析这些页面的html获取实际链接,然后再获取这些链接并使用请求模块下载它们。

无法为您编写整个代码,但您应该从这里开始:

请求:http://docs.python-requests.org/en/master/user/quickstart/

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

答案 1 :(得分: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)