我正在构建一个执行以下操作的应用程序:
一切实际上工作正常,但我似乎无法传递正在检查其他功能的网址,以便可以使用它。
此链接中的代码:http://pastebin.com/630FrspN
实际上会在日志文件中的每个条目中打印相同的URL ...如果我将日志文件(websiteheaders,url)放入for循环中,它会起作用,但它会在日志文件中打印一个条目,就像我一样多次我的主机文件中的网址。
我不知何故需要传递" url"在for循环中检查日志文件函数...
Probaly一个简单的答案,但我似乎无法找到它。提前谢谢。
编辑:我认为以下代码是最相关的。
def headerophalen(websites):
for url in websites:
try:
response = urllib2.urlopen(url)
headers = str(response.info())
websiteheaders.extend(headers.splitlines())
except urllib2.HTTPError, error:
print "Error opening URL: ", url, "HTTP Errorcode: ", error.code
continue
logfile(websiteheaders, url)
答案 0 :(得分:3)
您需要在for
循环内记录数据。你可以在他的回答中建立一个balldotballs建议的dict,但似乎只是写入你的日志,每次迭代都更有意义,除非你需要将处理过的信息用于记录之外的事情。
def headerophalen(websites):
for url in websites:
try:
response = urllib2.urlopen(url)
except urllib2.HTTPError, error:
print "Error opening URL: ", url, "HTTP Errorcode: ", error.code
else:
logfile(url, str(response.info()).splitlines())
答案 1 :(得分:2)
当您致电logfile(websiteheaders, url)
时,网址将只是您网站数组中的最后一个网址,因此这是唯一一个将记录在您的日志文件中的网址。如果我是你,我会将url->标题信息保存在字典中并将其传递给您的日志文件。
尝试类似:
headers = {}
然后在你的循环中使用:
response = urllib2.urlopen(url)
headerlist = str(response.info())
headers[url] = headerlist.splitlines()
现在你有一个字典,每个网址都有一个标题列表。您可以将其传递给日志文件功能,然后根据需要进行记录。
logfile(headers)
阅读字典 http://docs.python.org/2/tutorial/datastructures.html
编辑:修复我的语法和拼写