所以我有一些代码可以用来搜索我的邮箱,查找某些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()
答案 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
来确保您的文件已关闭。这是一种很好的做法,但在这个脚本中可能没有必要。