Как проверить статус URL для нескольких URL-адресов, хранящихся в файле CSV, и сохранить результаты в новый файл CSV - PullRequest
1 голос
/ 21 марта 2020

Я новичок в python и в настоящее время пытаюсь добиться следующего:

Я хочу проверить коды состояния ответа HTTP для нескольких URL-адресов в моем файле input.csv:

id    url
1    https://www.google.com
2    https://www.example.com
3    https://www.testtesttest.com
...

и сохранить результаты в виде дополнительного столбца «status», помечая те URL-адреса, которые не работают, или с некоторыми другими проблемами в моем файле output.csv:

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)

Может ли кто-нибудь помочь с этим ? Заранее спасибо!

1 Ответ

2 голосов
/ 21 марта 2020
id  url
1   https://www.google.com
2   https://www.example.com
3   https://www.testtesttest.com

Скопируйте вышеуказанное в буфер обмена. Затем запустите приведенный ниже код. Вам нужно l oop через 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)
...