Saya hanya ingin memiliki https-Link dalam file terpisah. Bagaimana melakukannya tanpa mendapatkan baris kode yang lengkap, hanya tautannya?
findstr
atau grep
?
Saya hanya ingin memiliki https-Link dalam file terpisah. Bagaimana melakukannya tanpa mendapatkan baris kode yang lengkap, hanya tautannya?
findstr
atau grep
?
Jawaban:
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 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):
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.
href="
?