PDFファイルが複数ある場合でもwgetを取得するには、すでにダウンロードしたindex.htmlからpdfファイルを抽出してください。

PDFファイルが複数ある場合でもwgetを取得するには、すでにダウンロードしたindex.htmlからpdfファイルを抽出してください。

index.htmlPDFファイルへのhrefリンクを含むファイルがあります。

私がするときgrep -i 'href=' index.html、私は例えば次のような結果を得ます:

<p>Télécharger : <a href="https://ecole-euclid.cnrs.fr/wp-content/uploads/EDE2019_Henrot-Versillé-C1_L1.pdf"><span style="color: #0000ff;">Cours n°1</span></a> (S. Henrot-Versillé), <span style="color: #0000ff;"><a href="https://ecole-euclid.cnrs.fr/wp-content/uploads/EDE2019_Henrot-Versillé_C1_L2.pdf">Cours n°2</a></span> (S. Henrot-Versillé), <a href="https://ecole-euclid.cnrs.fr/wp-content/uploads/EDE2018_Henrot-Versillé_C3.pdf"><span style="color: #0000ff;">Cours n°3</span></a> (S. Henrot-Versillé)</p>
<p>Télécharger le cours sur <a href="https://ecole-euclid.cnrs.fr/wp-content/uploads/EDE2018_Martinelli_C2_L1_Bayesian.pdf">la méthode bayésienne</a> (M. Martinelli) et <a href="https://ecole-euclid.cnrs.fr/wp-content/uploads/EDE2018_Martinelli_C2_TD_Bayesian.pdf">son TD</a> (M. Martinelli).</p></div>
<p><a href="https://github.com/mhuertascompany/EDE19" title="GitHub Deep Learning 2019 EDE">https://github.com/mhuertascompany/EDE19</a></p>
<p><a href="https://colab.research.google.com/drive" title="TDs Deep Learning 2019">https://colab.research.google.com/drive</a></p></div>
        <a href="https://www.facebook.com/euclid.france" class="icon">
        <a href="https://twitter.com/Euclid_FR" class="icon">
        <a href="#" class="icon">
        <a href="https://ecole-euclid.cnrs.fr/feed/" class="icon">

同じ行に複数のPDFリンクがある場合でも、PDFファイルの完全なhrefをすべて抽出するためにgsed(MacOS Catalinaの場合)を介してgrepの出力をパイプしたいと思います。

私は初めて試しました:

grep -i 'href=' index.html | gsed 's/href="\(.*pdf\)"/\1/g'

しかし、これはうまくいきません。ご覧のとおり、同じリンク上のすべてのPDFリンクではなく、最初のPDFリンクのみを印刷します。したがって、すべてのパターンマッチングをどのように印刷しますか?

目的は、それ以降のファイルindex.htmlにあるすべてのPDFファイルをダウンロードすることです。

どんな助けでもいいでしょう。

ベストアンサー1

これでGNU sedがあるので、GNU awkをインストールできます。複数文字のRSとRTにGNU awkを使用する:

$ awk -v RS='href="http[^"]+.pdf"' -F'"' 'RT{$0=RT; print $2}' file
https://ecole-euclid.cnrs.fr/wp-content/uploads/EDE2019_Henrot-Versillé-C1_L1.pdf
https://ecole-euclid.cnrs.fr/wp-content/uploads/EDE2019_Henrot-Versillé_C1_L2.pdf
https://ecole-euclid.cnrs.fr/wp-content/uploads/EDE2018_Henrot-Versillé_C3.pdf
https://ecole-euclid.cnrs.fr/wp-content/uploads/EDE2018_Martinelli_C2_L1_Bayesian.pdf
https://ecole-euclid.cnrs.fr/wp-content/uploads/EDE2018_Martinelli_C2_TD_Bayesian.pdf

それ以外の場合は、すべてのUNIXシステムのすべてのシェルでawkを使用してください。

$ awk '{
    while ( match($0,/href="http[^"]+.pdf"/) ) {
        split(substr($0,RSTART,RLENGTH),f,/"/)
        print f[2]
        $0 = substr($0,RSTART+RLENGTH)
    }
}' file
https://ecole-euclid.cnrs.fr/wp-content/uploads/EDE2019_Henrot-Versillé-C1_L1.pdf
https://ecole-euclid.cnrs.fr/wp-content/uploads/EDE2019_Henrot-Versillé_C1_L2.pdf
https://ecole-euclid.cnrs.fr/wp-content/uploads/EDE2018_Henrot-Versillé_C3.pdf
https://ecole-euclid.cnrs.fr/wp-content/uploads/EDE2018_Martinelli_C2_L1_Bayesian.pdf
https://ecole-euclid.cnrs.fr/wp-content/uploads/EDE2018_Martinelli_C2_TD_Bayesian.pdf

この出力をにパイプするとxargs -n 1 curl -OPDFがダウンロードされます(URLにスペースがないと仮定)。

おすすめ記事