0 Saya hanya ingin memiliki https-Link dalam file terpisah. Bagaimana melakukannya tanpa mendapatkan baris kode yang lengkap, hanya tautannya? batch script grep findstr Jsterr sumber Itu bukan HTML yang valid (di mana href="? Attie sudah mengambilnya dan menggantinya :-) jsterr 1 Untuk memperjelas, apakah Anda mencari solusi menggunakan findstratau grep? Worthwelle findstr akan menyenangkan, grep hanya unix kan? jsterr Secara umum, ya, tetapi juga telah dikompilasi untuk Windows . Worthwelle Jawaban: 1 Pertama dan terpenting, jangan mencoba untuk mem-parsing HTML dengan ... XPath dapat memberikan apa yang Anda inginkan - XPath dirancang khusus untuk ini: //a/@href Kemudian untuk menggunakan XPath dengan xmllint(utilitas lain akan ada): xmllint --shell --html file.html <<<'cat //a/@href' Itu akan memberi Anda banyak hal, termasuk prompt ( / >), nama atribut ( href="...") dan pemisah ( -------) ... jadi filterlah, sortir, dan dapatkan daftar URL unik: xmllint --shell --html file.html <<<'cat //a/@href' \ | sed '/^ href="/!d;s/^ href="//;s/"$//' \ | sort \ | uniq Semuanya tanpa grep. Di sini, kami gunakan seduntuk: /^ href="/!d - hapus semua baris yang tidak cocok dengan regex ^ href=" s/^ href="// - Memotong awalan s/"$// - Memotong sufiks Atau, Anda dapat menggunakan penyeleksi CSS dan bukannya XPath, dengan tq(proyek Python): tq 'a' -a href < file.html Catatan: setelah diskusi sekitar grep, saya menganggap Unix ... Jika Anda memiliki Cygwin atau WSL, maka ini mungkin akan bekerja di sana juga. xmllint(sebuah utilitas dari libxml2 ) memiliki rilis Windows. Attie sumber
1 Pertama dan terpenting, jangan mencoba untuk mem-parsing HTML dengan ... XPath dapat memberikan apa yang Anda inginkan - XPath dirancang khusus untuk ini: //a/@href Kemudian untuk menggunakan XPath dengan xmllint(utilitas lain akan ada): xmllint --shell --html file.html <<<'cat //a/@href' Itu akan memberi Anda banyak hal, termasuk prompt ( / >), nama atribut ( href="...") dan pemisah ( -------) ... jadi filterlah, sortir, dan dapatkan daftar URL unik: xmllint --shell --html file.html <<<'cat //a/@href' \ | sed '/^ href="/!d;s/^ href="//;s/"$//' \ | sort \ | uniq Semuanya tanpa grep. Di sini, kami gunakan seduntuk: /^ href="/!d - hapus semua baris yang tidak cocok dengan regex ^ href=" s/^ href="// - Memotong awalan s/"$// - Memotong sufiks Atau, Anda dapat menggunakan penyeleksi CSS dan bukannya XPath, dengan tq(proyek Python): tq 'a' -a href < file.html Catatan: setelah diskusi sekitar grep, saya menganggap Unix ... Jika Anda memiliki Cygwin atau WSL, maka ini mungkin akan bekerja di sana juga. xmllint(sebuah utilitas dari libxml2 ) memiliki rilis Windows. Attie sumber
href="
?findstr
ataugrep
?Jawaban:
Pertama dan terpenting, jangan mencoba untuk mem-parsing HTML dengan ...
XPath dapat memberikan apa yang Anda inginkan - XPath dirancang khusus untuk ini:
Kemudian untuk menggunakan XPath dengan
xmllint
(utilitas lain akan ada):Itu akan memberi Anda banyak hal, termasuk prompt (
/ >
), nama atribut (href="..."
) dan pemisah (-------
) ... jadi filterlah, sortir, dan dapatkan daftar URL unik:Semuanya tanpa
grep
.Di sini, kami gunakan
sed
untuk:/^ href="/!d
- hapus semua baris yang tidak cocok dengan regex^ href="
s/^ href="//
- Memotong awalans/"$//
- Memotong sufiksAtau, Anda dapat menggunakan penyeleksi CSS dan bukannya XPath, dengan
tq
(proyek Python):Catatan: setelah diskusi sekitar
grep
, saya menganggap Unix ... Jika Anda memiliki Cygwin atau WSL, maka ini mungkin akan bekerja di sana juga.xmllint
(sebuah utilitas dari libxml2 ) memiliki rilis Windows.sumber