HTML olmadan wget kullanarak bir sayfanın metni nasıl alınır?


17

Bir web sayfasında wget'i denersem, sayfayı html olarak alıyorum. İlişkili html içermeyen bir dosyanın metnini almak mümkün müdür? (Bazı HTML sayfaları c programı html etiketleri ile indiriliyor çünkü bu benim için gereklidir. Tarayıcıda açmak ve bir .c dosyası yapmak için metni el ile kopyalamak zorunda.)


1
Aslında mümkündür, ancak kodu sayfadan ayrıştıracak ve olarak kaydedecek bir işlev yazmanız gerekir .c. Zor değil, ancak sayfa yapısına bağlıdır. Eğer bir bağlantı sağlarsanız biri tam kodu size yardımcı olacaktır. Aksi takdirde sedya perlda arkadaşlarınız.
acele

Yanıtlar:


26

wgetyalnızca dokümanı alır. Belge HTML biçimindeyse, istediğiniz şey belgeyi ayrıştırmanın sonucudur.

Örneğin, lynx -dump -nolistçevresinde vaşak varsa kullanabilirsiniz .

lynx-dumpAyrıştırma işleminin sonucunu çıktılamak için kullanılan özelliğe sahip hafif, basit bir web tarayıcısıdır . -nolistsayfanın herhangi bir köprüsü varsa görünecek olan sonunda bağlantı listesinden kaçınır.

@Thor tarafından belirtildiği elinksgibi, bunun için de kullanılabilir, çünkü bir -dumpseçeneği de vardır (ve -no-referencesbağlantı listesini atlamak zorundadır). Özellikle -sigh- çerçevelerini (MTFBWY) kullanarak bazı sitelerde yürüdüğünüzde yararlı olabilir.

Ayrıca, sayfanın gerçekten HTML etiketlerine sahip C kodu olmadığı sürece, yalnızca C kodundan başka bir şey olmadığından emin olmak için sonucu kontrol etmeniz gerekeceğini unutmayın.


6

Bu diğer araçlara sahip değilseniz, sadece wget ve sayfada biçimlendirme sadece düz metin ve bağlantılar, örneğin kaynak kodu veya bir dosya listesi varsa, HTML'yi aşağıdaki gibi sed kullanarak şeritleyebilirsiniz:

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

Bu, sayfanın kaynağını STDOUT'a dökmek için wget kullanır ve herhangi bir <> çiftini ve aralarındaki her şeyi ayırmak için sed'i kullanır.

Daha sonra sed komutunun çıktısını>> kullanarak oluşturmak istediğiniz dosyaya yönlendirebilirsiniz:

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

Not: Dosyada istemediğiniz fazladan boşluk bulunduğunu görebilirsiniz (örneğin satırlar birkaç sütuna girintilidir)

Dosyayı (veya C kaynak kodunu indirirken kaynak biçimlendiriciyi) düzenlemek için metin düzenleyicinizi kullanmak en kolay yöntem olabilir.

Dosyanın her satırında aynı basit şeyi yapmanız gerekiyorsa, sed komutunda bunu yapmak için bir komut ekleyebilirsiniz (burada bir önde gelen alanı sıyırmak):

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

3

sadece başka bir araç eklemek için. Tercih ediyorum w3m, lynxbenzer bir konsol tarayıcısı. Sisteminizde zaten mevcut olanları kontrol etmek isteyebilirsiniz.

w3m -dump website.html
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.