很抱歉,如果这是多余的,但我已经非常努力地寻找答案,但我一直找不到答案。我对此非常陌生,请耐心等待:
我的目标是通过一个充满网址的csv读取一段代码,并返回一个http状态代码。我有Python 2.7.5。每行的结果会给我一个url和状态代码,如下所示:www.stackoverflow.com:200。
我的csv是一个包含数百个网址的单列csv,每行一个。我正在使用的代码如下,当我运行此代码时,它给我一个/ r分隔两个类似于此的URL:
{http://www.stackoverflow.com/test \ rhttp://www.stackoverflow.com/questions/':404}
我希望看到两个网址分开,每个网址都有自己的http状态代码:
{' http://www.stackoverflow.com':200,' http://www.stackoverflow.com/questions/':404}
但是当Python读取csv时似乎有一个额外的\ r \ n,所以它没有正确读取网址。我知道人们已经说过strip()并不是一个全包式的雨刮器 - 所以任何关于如何做到这一点的建议都会非常感激。
import requests
def get_url_status(url):
try:
r = requests.head(url)
return url, r.status_code
except requests.ConnectionError:
print "failed to connect"
return url, 'error'
results = {}
with open('url2.csv', 'rb') as infile:
for url in infile:
url = url.strip() # "http://datafox.co"
url_status = get_url_status(url)
results[url_status[0]] = url_status[1]
print results
答案 0 :(得分:0)
在将csv文件提供给Python之前,您可能需要弄清楚csv文件的格式。
首先,确保它具有一致的行结尾。如果它有时会有换行符,并且有其他人,那可能是一个需要纠正的问题。
如果您使用的是* ix系统,tr可能会有用。