2017-01-05 3 views
2

サイズが10GBのファイルがあります。このファイルには主にURLが含まれています。私は各URLのHTTPステータスコードを取得し、.CSV拡張子を持つ別のファイルに格納しようとしています。
私は、コードの検索とPythonを使ってURLのステータスコードにアクセスするための解決策を見つけた:HTTPステータスをより早く見つける方法は?

import requests 
request = requests.get('http://www.example.com') 
print(request.status_code) 

しかし、それは1つのURLになります。私はより大きなサイズのファイルを持っています。私はこのコマンドにファイルからURLをどのように入力できるか分かりません。 .CSV形式の出力を保存する方法さえも
これは高速ではありません。私は10 GBのファイルのためのより速い結果を与えるより速い解決を探しています。
また、私はUbuntuのコマンドを試してみました:

xargs -n1 -P 10 curl -o /dev/null --silent --head --write-out '%{url_effective},%{http_code}\n' <Input_File.txt> output.CSV 

しかし、それはまた、マルチスレッドではありません。一度に1行ずつ入力し、CSVに保存しています。
私の質問は、この作業を10 GBのファイルサイズでより高速にする方法です。プログラミング言語でこの問題に対する解決策があれば、私は実装して喜んでします。ここで
は、URLのサンプルファイルである - 私の10ギガバイトのファイルから小さなチャンク:

URL、HTTPステータスコード


https://drive.google.com/file/d/0BzQ6rtO2VN95c0YzclhySVZYNDQ/view?usp=sharing
私はとしてCSVで出力を保存したいです

例:

これは私のクエリを理解するのに役立ちます。

+0

マシンが十分強力な場合は、Pythonでマルチプロセッシングを試してみてください。公開鍵のURLを設定し、公開キューからURLを取得するN個のプロセスを確立する。 – Acepcs

+0

@Acepcsアドバイスをいただきありがとうございます。それでも私の友人のファイルサイズは10 GBです。またはさらにいくつかの時間で。プロセス数と分割数は、私が何をすべきかと考えています。私はすべてのファイルサイズを高速に実行するためのすべてのソリューションを探しています。私は、プログラムが仕事を完了させるまでに数日かかることは望んでいません。数時間は私が望むものです。 –

+0

[これはいくつかのポインタを提供するかもしれません](https://stackoverflow.com/questions/6441509/how-to-write-a-process-pool-bash-shell)あなたがPythonを使いこなそうとしない場合。 –

答えて

1

curlができることは、Pythonのリクエストがしばしばやりやすくなります。それはまた、HEADメソッドを持っています。

import requests 
response = requests.head('http://www.example.com') 
print(response.status_code) 
+0

はい、あなたは正しいですが、私は処理するために複数のURLを渡す方法を知らず、ubuntuのPythonまたはCurlコマンドに出力します。私は多くのことを試みましたが、同じ問題があります。一度に1つのUR1。私は複数のURLを一度に100と言います。私のファイルサイズは10GBです。.... –

+0

複数のURLを同時に使用するのは、同じサーバー上にある場合のみです。それ以外の場合は接続確立のオーバーヘッドがまだ存在します。そして、あなたは10GBのすべてを処理した後、おそらく約30秒を節約するでしょう。 – e4c5

+0

私はURLの束を持っていて、生きているかどうかをチェックするだけです。それらは同じサーバー上にありません。彼らはまた別の場所から来ています。 –

関連する問題