0

我有这个长长的 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 是否使用缓存,但没有找到决定性的答案。如果不是什么其他技术可以用于此目的。

4

3 回答 3

2

您可以在发出请求时将 url 存储在字典 ( urls = {}) 中,并稍后检查您是否已经对该 url 发出请求:

if key not in urls:
  connection = urllib.request.urlopen(url)
  urls[key] = url
  return connection.getcode()

顺便说一句,如果您反复向相同的 url 发出请求(脚本的多次运行),并且需要持久缓存,我建议使用requests - cache

于 2013-08-22T19:16:40.287 回答
2

为什么不创建set()URL 的 python 呢?这样每个 url 只包含一次。

于 2013-08-22T18:24:13.237 回答
1

您如何将 URL 与密钥相关联?一本字典?

您可以使用字典将 URL 映射到它的响应以及您需要跟踪的任何其他信息。如果 URL 已经在字典中,那么您知道响应。所以你有一本字典:

url_cache = {
    "url1" : ("response", [key1,key2])
    }

如果您需要以不同的方式组织事物,那么使用另一本字典应该不会太难。

于 2013-08-22T19:15:07.697 回答