验证文件中是否存在URL

时间:2012-08-13 21:25:46

标签: python

所以我有一些代码可以用来搜索我的邮箱,查找某些URL。完成后,它会创建一个名为links.txt的文件

我想针对该文件运行一个脚本,以获取该列表中所有当前URL的输出。我的脚本只允许我一次检查URL

import urllib2

for url in ["www.google.com"]:

    try:
        connection = urllib2.urlopen(url)
        print connection.getcode()
        connection.close()
    except urllib2.HTTPError, e:
        print e.getcode()

2 个答案:

答案 0 :(得分:4)

使用请求:

import requests

with open(filename) as f:
    good_links = []
    for link in file:
        try:
            r = requests.get(link.strip())
        except Exception:
            continue
        good_links.append(r.url) #resolves redirects

您还可以考虑将对request.get的调用解压缩为辅助函数:

def make_request(method, url, **kwargs):
    for i in range(10):
        try:
            r = requests.request(method, url, **kwargs)
            return r
        except requests.ConnectionError as e:
            print e.message
        except requests.HTTPError as e:
            print e.message
        except requests.RequestException as e:
            print e.message
    raise Exception("requests did not succeed")

答案 1 :(得分:1)

如果您已经在遍历URL列表进行迭代,那么进行此更改是微不足道的:

import urllib2

for url in open("urllist.txt"):   # change 1

    try:
        connection = urllib2.urlopen(url.rstrip())   # change 2
        print connection.getcode()
        connection.close()
    except urllib2.HTTPError, e:
        print e.getcode()

迭代文件会返回文件的行(包括行结尾)。我们在网址上使用rstrip()来删除行结尾。

您可以进行其他改进。例如,有些人会建议您使用with来确保您的文件已关闭。这是一种很好的做法,但在这个脚本中可能没有必要。

相关问题