Bagaimana cara mendapatkan teks dari halaman menggunakan wget tanpa html?

17

Jika saya mencoba wget di halaman web, saya mendapatkan halaman sebagai html. Apakah mungkin untuk mengambil hanya teks file tanpa html terkait? (Ini diperlukan bagi saya karena beberapa halaman HTML berisi program c sedang diunduh dengan tag html. Saya harus membukanya di browser dan secara manual menyalin teks untuk membuat file .c.)

Jamur Bulan
sumber
1
Sebenarnya itu mungkin, tetapi Anda perlu menulis beberapa fungsi yang akan mem-parsing kode dari halaman dan menyimpannya sebagai .c. Ini tidak sulit, tetapi tergantung pada struktur halaman. Jika Anda memberikan tautan, mungkin seseorang akan membantu Anda dengan kode yang tepat. Jika tidak sedatau perlteman-teman Anda.
buru

Jawaban:

26

wgethanya akan mengambil dokumen. Jika dokumen dalam HTML, yang Anda inginkan adalah hasil penguraian dokumen.

Anda dapat, misalnya, menggunakan lynx -dump -nolist, jika Anda memiliki lynx di sekitar.

lynxadalah peramban web yang ringan dan sederhana, yang memiliki -dumpfitur, digunakan untuk menampilkan hasil dari proses parsing. -nolistmenghindari daftar tautan di bagian akhir, yang akan muncul jika halaman memiliki hyperlink.

Seperti yang disebutkan oleh @Thor, elinksdapat digunakan untuk ini juga, karena ia juga memiliki -dumpopsi (dan harus -no-referencesmenghilangkan daftar tautan). Ini mungkin sangat berguna jika Anda berjalan melintasi beberapa situs menggunakan -sigh- frames (MTFBWY).

Juga, perlu diingat bahwa, kecuali halaman tersebut benar-benar hanya kode C dengan tag HTML, Anda harus memeriksa hasilnya, hanya untuk memastikan tidak ada yang lebih dari kode C di sana.

njsg
sumber
5

Jika Anda tidak menginstal alat-alat lain ini, hanya wget, dan halaman tidak memiliki format hanya teks dan tautan, misalnya kode sumber atau daftar file, Anda dapat menghapus HTML menggunakan sed seperti ini:

wget -qO- http://address/of/page/you/want/to/view/ | sed -e 's/<[^>]*>//g'

Ini menggunakan wget untuk membuang sumber halaman ke STDOUT dan sed untuk menghapus setiap pasangan <> dan apa pun di antara mereka.

Anda kemudian dapat mengarahkan output dari perintah sed ke file yang ingin Anda buat menggunakan>:

wget -qO- http://.../ | sed -e 's/<[^>]*>//g' > downloaded_file.txt

NB: Anda mungkin menemukan bahwa ia memiliki spasi putih tambahan dalam file yang tidak Anda inginkan (misal, baris diberi indentasi beberapa kolom)

Mungkin paling mudah untuk menggunakan editor teks Anda untuk merapikan file itu (atau formatter sumber saat Anda mengunduh kode sumber C).

Jika Anda perlu melakukan hal sederhana yang sama untuk setiap baris file Anda dapat memasukkan perintah untuk melakukan itu di perintah sed (di sini melucuti satu ruang terdepan):

wget -qO- http://.../ | sed -e 's/<[^>]*>//g;s/^ //g' > downloaded_stripped_file.txt
JohnGH
sumber
3

hanya untuk menambah alat lain. Saya lebih suka w3m, yang lynxseperti browser konsol. Anda mungkin ingin memeriksa apa yang sudah tersedia di sistem Anda.

w3m -dump website.html
McPeppr
sumber