pandas - 如何检查存储在 CSV 文件中的多个 URL 的 URL 状态并将结果保存到新的 CSV 文件
问题描述
我是 python 新手,目前正在尝试实现以下目标:
我想检查 input.csv 文件中多个 URL 的 HTTP 响应状态代码:
id url
1 https://www.google.com
2 https://www.example.com
3 https://www.testtesttest.com
...
并将结果另存为“状态”列,在我的 output.csv 文件中标记那些已关闭或存在其他问题的 URL:
id url status
1 https://www.google.com All good!
2 https://www.example.com All good!
3 https://www.testt75esttest.com Down
...
到目前为止,我正在尝试以下方法,但没有成功::
import requests
import pandas as pd
import requests.exceptions
df = pd.read_csv('path/to/my/input.csv')
urls = df.T.values.tolist()[1]
try:
r = requests.get(urls)
r.raise_for_status()
except (requests.exceptions.ConnectionError, requests.exceptions.Timeout):
print "Down"
except requests.exceptions.HTTPError:
print "4xx, 5xx"
else:
print "All good!"
不知道如何获得上述结果并将其另存为 output.csv 文件中的新列:
df['status'] = #here the result
df.to_csv('path/to/my/output.csv', index=False)
有人可以帮忙吗?提前致谢!
解决方案
id url
1 https://www.google.com
2 https://www.example.com
3 https://www.testtesttest.com
将以上内容复制到剪贴板。然后,运行以下代码。您需要遍历 url 并将状态附加到列表中。然后,将列表设置为新列。
import requests
import pandas as pd
import requests.exceptions
df = pd.read_clipboard()
df
urls = df['url'].tolist()
status = []
for url in urls:
try:
r = requests.get(url)
r.raise_for_status()
except (requests.exceptions.ConnectionError, requests.exceptions.Timeout):
status.append("Down")
except requests.exceptions.HTTPError:
status.append("4xx, 5xx")
else:
status.append("All good!")
df['status'] = status
df.to_csv('path/to/my/output.csv', index=False)
推荐阅读
- java - 房间仪表测试
- javascript - 在 Javascript 中将长数字视为字符串
- heroku - 找不到heroku运行混合命令
- reactjs - 打开编辑表单后,如何为状态分配值?
- single-sign-on - 有关证书的 SAML 工作流程问题
- regex - 特定文件名集体更改
- git - 是否可以将 git 子模块连接到主项目分支上的特定提交?
- java - 当 Spring Boot 在生产中运行时,Sentry.io 没有捕获错误?
- google-analytics - 谷歌分析网络
- angular - 在 Visual Studio 2015 中设置 Angular 7 环境