我有这么长的URL列表,我需要检查响应代码,其中链接重复2-3次。我编写了这个脚本来检查每个URL的响应代码。
connection =urllib.request.urlopen(url)
return connection.getcode()
URL以这种格式提供XML格式
< entry key="something" > url</entry>
< entry key="somethingelse" > url</entry>
我必须将响应代码与属性Key关联起来,所以我不想使用SET。
现在我绝对不希望对同一个URL发出超过1个请求,所以我在搜索urlopen是否使用缓存但是没有找到确定的答案。如果没有,可以使用其他技术来实现此目的。
答案 0 :(得分:2)
为什么不创建一个python set()
的URL?这样每个网址只包含一次。
答案 1 :(得分:2)
您可以在提出请求时将网址存储在字典(urls = {}
)中,并检查您之后是否已经对该网址提出了要求:
if key not in urls:
connection = urllib.request.urlopen(url)
urls[key] = url
return connection.getcode()
顺便说一句,如果你反复向相同的网址发出请求(多次运行脚本),并且需要持久缓存,我建议requests使用requests-cache
答案 2 :(得分:1)
如何将网址与密钥相关联?字典?
您可以使用字典将URL映射到其响应以及您需要跟踪的任何其他信息。如果URL已经在字典中,那么您就知道了响应。所以你有一本字典:
url_cache = {
"url1" : ("response", [key1,key2])
}
如果你需要以不同的方式组织事情,那么使用另一本字典不应该太难。