Bagaimana saya bisa "menemukan" semua tautan dari kode sumber laman web?

0

Saya hanya ingin memiliki https-Link dalam file terpisah. Bagaimana melakukannya tanpa mendapatkan baris kode yang lengkap, hanya tautannya?

masukkan deskripsi gambar di sini

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:

  1. /^ href="/!d - hapus semua baris yang tidak cocok dengan regex ^ href="
  2. s/^ href="// - Memotong awalan
  3. 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