複数のURLターゲットをテキストファイルに保存する

複数のURLターゲットをテキストファイルに保存する

URLリストがあり、各宛先を別々のテキストファイルに保存したいと思います。

以下は、URLを含む入力ファイルの例です。

~$: head -3 url.txt 
http://www.uniprot.org/uniprot/P32234.txt
http://www.uniprot.org/uniprot/P05552.txt 
http://www.uniprot.org/uniprot/P07701.txt

私は現在、これを行うためにPythonカスタム関数を使用しています。動作しますが、最も不便なのは、ユーザーが手動でURLをコピーして貼り付ける必要があり(直接ファイル入力なし)、出力の各行の先頭にいくつかの「b」文字(?バイナリ)が含まれることです。

~$: head -3 P32234.txt
b' ID   128UP_DROME             Reviewed;         368 AA.
'b' AC   P32234; Q9V648;
'b' DT   01-OCT-1993, integrated into UniProtKB/Swiss-Prot.

これはPythonコードです:

def html_to_txt(): 
    import urllib.request 
    url = str(input('Enter URL: ')) 
    page = urllib.request.urlopen(url) 
    with open(str(input('Enter filename: ')), "w") as f: 
        for x in page: 
            f.write(str(x).replace('\\n','\n')) 
    s= 'Done' 
    return s

一部のUnixユーティリティを使用してこれを行うためのよりきれいな方法はありますか?

ベストアンサー1

使用-iオプション:

wget -i ./url.txt

からman wget

-i ファイル

--入力ファイル=ファイル

ローカルファイルまたは外部ファイルからURLを読みます。 - がファイルとして指定されている場合は、標準入力からURLを読み込みます。 (リテラル名が - のファイルから読み取るには ./- を使用します。) この機能を使用すると、コマンドラインに URL を表示する必要はありません。コマンドラインと入力ファイルの両方にURLがある場合は、コマンドラインのURLが最初に検索されます。 --force-htmlが指定されていない場合、ファイルには1行に1つずつ一連のURLを含める必要があります。

ただし、--force-html を指定すると、そのドキュメントは html として扱われます。この場合、ドキュメントに ""を追加するか、コマンドラインで--base = urlを指定して解決できる相対リンク関連の問題が発生する可能性があります。

ファイルが外部の場合、Content-Typeがtext / htmlと一致すると、文書は自動的にhtmlとして処理されます。また、指定しない場合は、ファイルの場所が暗黙的にデフォルトのhrefとして使用されます。

おすすめ記事