我想检查一个url列表(在dataframedf的一列中)查看它们的状态代码(404403和200似乎是比较有趣的)。我定义了一个函数来完成这个任务。但是,它使用的for循环效率很低(我有一个很长的url列表!)。在
有没有人对如何更有效地做这件事有什么建议?最佳情况下,返回的状态代码也将显示在数据帧的新列中,例如df['status_code_url']。在
def url_access(df, column):
e_404 =0
e_403 =0
e_200 =0
for i in range(0, len(df)):
if requests.head(df[column][i]).status_code == 404:
e_404= e_404+1
elif requests.head(df[column][i]).status_code == 403:
e_403 = e_403 +1
elif requests.head(df[column][i]).status_code == 200:
e_200 = e_200 +1
else:
print(requests.head(df[column][i]).status_code)
return ("Statistics about " + column , '{:.1%}'.format(e_404/len(df))
+ " of links to intagram post return 404", '{:.1%}'.format(e_403/len(df))
+ " of links to intagram post return 403", '{:.1%}'.format(e_200/len(df))
+ " of links to intagram post return 200")
非常感谢你!在
使用}-
Pandas
、apply
和{基本上,你的任务似乎是:
第一步使用:
有关将此功能应用于dataframe列的第二步,请参阅 https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.apply.html
^{pr2}$对于第三步,您可以在列上使用运算来计算百分比:
(注意代码未运行)
pandas.DataFrame.apply
(或者更确切地说,普通的requests
库)一次只能发出一个请求。要并行执行多个请求,可以使用^{pip install requests-futures
安装):然后,您可以使用例如
^{pr2}$groupby
,如their answer中的@Aritesh所建议的:使用此功能,您可能还需要针对连接错误和超时添加一些保护:
相关问题 更多 >
编程相关推荐