Python 从CSV读取URL,获取HTTP响应状态,检查重定向,存储在新的CSV中
我有一个csv文件,里面有一堆URL。我正在编写一个脚本,该脚本执行以下操作:Python 从CSV读取URL,获取HTTP响应状态,检查重定向,存储在新的CSV中,python,csv,python-requests,Python,Csv,Python Requests,我有一个csv文件,里面有一堆URL。我正在编写一个脚本,该脚本执行以下操作: 从csv中读取URL 将url列表传递给request.get() 然后 获取初始http状态以及重定向的url和http状态 当我只传入一个url,而不尝试从另一个csv读取url时,我的代码工作正常。然而,在scale中,从一个文件中读取批量url,然后将输出处理到另一个文件是最有意义的。你能帮我理解我的代码哪里出了问题吗?提前谢谢 # -*- coding: utf-8 -*- import requests
# -*- coding: utf-8 -*-
import requests
import csv
import time
# set filename with date + time
timestr = time.strftime("%m-%d-%Y-%H-%M-%S")
filename = str("redirect-output\\redirect-test-"+timestr+".csv")
with open('bulk-url-filename.csv', 'rb') as f:
reader = csv.reader(f)
for row in reader:
urls = row[0]
#print urls
r = requests.get(urls)
f = open(filename, 'a+')
response = requests.get(r)
if response.history:
print "Request was redirected:"
reqredirected = "Request was redirected:"
f.write(reqredirected)
f.write("\n")
for resp in response.history:
print resp.status_code
status = str(resp.status_code)
f.write(status)
f.write("\n")
print resp.url
url = str(resp.url)
f.write(url)
f.write("\n")
print "Final destination:"
final = "Final destination:"
f.write(final)
f.write("\n")
print response.status_code
destinationstatus = str(response.status_code)
f.write(destinationstatus)
f.write("\n")
print response.url
destinationurl = str(response.url)
f.write(destinationurl)
print "\n"
f.write("\n")
else:
print "Request was not redirected"
noredirect = "Request was not redirected"
f.write(noredirect)
f.write("\n")
responseurl = response.url
print responseurl
f.write(responseurl)
f.write("\n")
我正在将输出打印到控制台,以便查看正在发生的情况,并将行写入csv以供以后分析。能否修复代码中的缩进?因为它不会运行,而且有点难以判断您的问题可能在哪里。为什么您有这一行
response=requests。当r
已经是响应时,获取(r)
?同样基于当前缩进,r
被分配给循环中的每一次,并且不做任何处理。固定缩进。response=requests.get(r)
行来自初始实现,当我试图扩展代码以允许将来自单独csv的URL读入脚本时,这就是r=requests.get(URL)
代码的来源。我只是不知道如何把这两个想法结合起来。我找到了解决问题的办法。我将r=requests.get(url)
重命名为response=requests.get(url)
,并将下的代码块移动到open('file.csv','rb'作为f:
行代码,现在脚本按预期运行。感谢您修复代码中的缩进?因为它不会运行,并且有点难以判断问题可能在哪里。为什么有这行代码response=requests.get(r)
当r
已经是响应时?同样基于当前缩进,r
被分配给循环中的每一次,并且没有做任何处理。固定缩进。response=requests.get(r)
行来自初始实现,当我试图扩展代码以允许将来自单独csv的URL读入脚本时,r=requests.get(URL)
代码来自。我只是不确定如何将这两个想法连贯地结合起来。我找到了解决问题的方法。我将r=requests.get(url)
重命名为response=requests.get(url)
并将下的代码块移动到open('file.csv','rb'as f:
代码行,现在脚本按预期运行。谢谢