У меня есть файл размером 10 ГБ. Этот файл содержит в основном URL. Я пытаюсь получить код статуса HTTP каждого URL-адреса и хранить их в другом файле с расширением .CSV
.
Я искал код и нашел решение для доступа код статуса URL с помощью Python:Как узнать статус HTTP быстрее?
import requests
request = requests.get('http://www.example.com')
print(request.status_code)
Но он принимает на одном URL. У меня есть файл большего размера. Я не знаю, как я могу вводить URL-адреса из файла в эту команду. Даже как сохранить выход в формате .CSV
Даже не быстрее. Я ищу более быстрое решение, которое даст мне более быстрый результат для файла размером 10 ГБ.
Я попробовал команду Ubuntu также:
xargs -n1 -P 10 curl -o /dev/null --silent --head --write-out '%{url_effective},%{http_code}\n' <Input_File.txt> output.CSV
Но это также не поддерживает многопоточность. Он принимает одну строку за раз, а затем сохраняет до CSV
.
Итак, мой вопрос заключается в том, как я могу сделать эту работу быстрее для размера файла 10 ГБ. Если на любом языке программирования есть какое-либо решение, я буду счастлив реализовать.
Вот пример файла из URL - небольшой кусок от моего 10 Гб файла:
https://drive.google.com/file/d/0BzQ6rtO2VN95c0YzclhySVZYNDQ/view?usp=sharing
Я хочу сохранить выходные данные в CSV, как:
URL, HTTP код статуса
Например:
http://google.com,200
http://example.com,503
Надеется, что это поможет понять мой запрос.
Если ваша машина достаточно мощная, попробуйте выполнить многопроцессорную обработку на Python. Установите общедоступную очередь URL-адресов, а затем установите N процессов, получающих URL-адреса из общедоступной очереди. – Acepcs
@Acepcs Спасибо за советы. Тем не менее размер моего друга составляет 10 ГБ. или даже больше в течение некоторого времени. Сколько процессов и сколько разделов вы думаете, что я должен делать. Я ищу все в одном решении для выполнения любого размера файла быстрее. Я не хочу, чтобы программа занимала несколько дней, чтобы выполнить эту работу. несколько часов - это то, что я хочу. –
[Это может указать некоторые указатели] (https://stackoverflow.com/questions/6441509/how-to-write-a-process-pool-bash-shell), если вы не хотите использовать Python. –