检查下载链接是否在python中有效

时间:2018-08-11 23:25:11

标签: python

我目前正在使用以下代码下载gz文件。 gz文件的url将根据用户提供的信息构建:

generalUrl = theWebsiteURL + "/" + packageName

因此generalURl可以包含以下内容:http://www.example.com/blah-0.1.0.tar.gz

        res = requests.get(generalUrl)
        res.raise_for_status()

我这里的问题是;我有一个名为theWebsiteURL的变量的网站列表。我需要检查所有这些网站,以查看哪些网站中的packageName中的软件包可供下载。我希望在确认过程中不要下载软件包。

一旦代码遍历了网站列表以发现包含该软件包的网站,那么我想从找到包含该软件包的网站列表中选择第一个网站,然后自动从中下载软件包。

类似这样的东西:

#!/usr/bin/env python2.7
listOfWebsites = [ website1, website2, website3, website4, and so on ]
goodWebsites = []
for eachWebsite in listOfWebsites:
        genURL = eachWebsite + "/" + packageName
        res = requests.get(genUrl)
        res.raise_for_status()
        if raise_for_status == "200"
             goodWebsites.append(genURL)

这就是我的想象力停止的地方。我需要协助来完成这项工作。甚至不确定我是否会以正确的方式进行操作。

1 个答案:

答案 0 :(得分:2)

您可以先尝试发送HEAD请求,以检查URL是否有效,然后才通过GET请求下载软件包。

    //this is the try block that takes too long resulting the unresponsiveness of the gui
    try {

        while (resultSet.next()) {
            for (int j = 1; j <= i; j++)
                finalResult += resultSet.getObject(j) + "      ";
            finalResult += '\n';
        }

    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    for (int k = 1; k <= i; k++)
        finalResult += resultSet.getMetaData().getColumnName(k) + " ("
                + resultSet.getMetaData().getColumnTypeName(k) + ")      ";
    finalResult += '\n';

    //this output is a string that will be shown in the JTextArea object
    return finalResult;
}