python中csv文件中循环的输出
在这个脚本中,我必须解析一些URL并将输出打印到CSV文件中python中csv文件中循环的输出,python,csv,Python,Csv,在这个脚本中,我必须解析一些URL并将输出打印到CSV文件中 import requests import CSV from urllib.parse import urlparse with open(r'C:\Users\acer\Desktop\Project\WordPress\output.csv', 'w', newline='') as file: ==>doubt writer = csv.writer(file)
import requests
import CSV
from urllib.parse import urlparse
with open(r'C:\Users\acer\Desktop\Project\WordPress\output.csv', 'w', newline='') as file: ==>doubt
writer = csv.writer(file) ==>doubt
def content_length(domain):
try:
r = requests.get(domain.strip())
surl = r.url
urlp = urlparse(surl)
furl = urlp.scheme + '://' + urlp.hostname + '/'
rd = requests.get(furl.strip())
rdstat = rd.status_code
#print(rdstat)
if rd.status_code == 403:
rdmsg = '403 - Forbidden'
elif rd.status_code == 200:
r1 = requests.get(furl, stream = True)
c_length = r1.headers['content-length']
rdmsg = c_length
else:
rdmsg = 'Not Available'
#print (rdmsg)
final_print = str(rdstat) + (',') + rdmsg
print(final_print)
writer.writerow(["Source Url", "Final Url", "Status Code", "Content-Length"]) ==>doubt
writer.writerow([surl,furl,str(rdstat),rdmsg]) ==>doubt
except Exception as e:
print(domain.strip() + ',' + 'Exception')
print(e)
print('Response Status Code,Content Length')
with open(r'C:\Users\acer\Desktop\Project\WordPress\domains.txt', 'r') as domlist:
for dom in domlist:
content_length(dom)
在这里,我的问题是我必须为每次迭代(即文本文件中的每个url)在CSV文件中添加输出。但是,我不知道在哪里添加CSV的代码段 您可以尝试重新构造代码,这样就不用先发出一个请求,然后再写一行;尝试发出所有请求,将数据放入列表,然后将这些列表写入csv文件 您可以通过返回数据而不是将其写入
content\u length
函数来完成此操作:
def content_length(domain):
try:
r = requests.get(domain.strip())
surl = r.url
urlp = urlparse(surl)
furl = urlp.scheme + '://' + urlp.hostname + '/'
rd = requests.get(furl.strip())
rdstat = rd.status_code
#print(rdstat)
if rd.status_code == 403:
rdmsg = '403 - Forbidden'
elif rd.status_code == 200:
r1 = requests.get(furl, stream = True)
c_length = r1.headers['content-length']
rdmsg = c_length
else:
rdmsg = 'Not Available'
#print (rdmsg)
final_print = str(rdstat) + (',') + rdmsg
print(final_print)
return [surl,furl,str(rdstat),rdmsg]
except Exception as e:
print(domain.strip() + ',' + 'Exception')
print(e)
这将返回一个列表,该列表将是您要写入的行。现在,您需要另一个函数从域文件中获取所有“行”:
def all_domains():
dom_data = []
with open(r'C:\Users\acer\Desktop\Project\WordPress\domains.txt', 'r') as file:
domlist = file.readlines()
for dom in domlist:
cl = content_length(dom)
dom_data.append(cl)
return dom_data
现在,您可以使用write\u rows
将所有\u域的结果写入csv:
domains = all_domains()
with open(r'C:\Users\acer\Desktop\Project\WordPress\output.csv', 'w', newline='') as file:
writer = csv.writer(file)
# Write headers
writer.writerow(["Source Url", "Final Url", "Status Code", "Content-Length"])
# Write domains
writer.writerows(domains)
此外,当您导入文件顶部的csv
包时,请确保该文件是小写而不是大写的“csv”,因为这将引发豁免
希望这有帮助