Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从CSV读取URL,获取HTTP响应状态,检查重定向,存储在新的CSV中_Python_Csv_Python Requests - Fatal编程技术网

Python 从CSV读取URL,获取HTTP响应状态,检查重定向,存储在新的CSV中

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

我有一个csv文件,里面有一堆URL。我正在编写一个脚本,该脚本执行以下操作:

  • 从csv中读取URL
  • 将url列表传递给request.get() 然后
  • 获取初始http状态以及重定向的url和http状态
  • 当我只传入一个url,而不尝试从另一个csv读取url时,我的代码工作正常。然而,在scale中,从一个文件中读取批量url,然后将输出处理到另一个文件是最有意义的。你能帮我理解我的代码哪里出了问题吗?提前谢谢

    # -*- 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:
    代码行,现在脚本按预期运行。谢谢