Simpan halaman web dengan skrip dengan menggunakan wget

0

Adakah yang tahu bagaimana cara menyimpan halaman web dengan skrip dengan menggunakan wget? Atau parameter apa yang harus digunakan untuk mencapai?

Halaman web berisi skrip dan sepertinya hanya ekstensi SingleFile Core di Chrome yang dapat menyimpan semua properti konten. Firefox tidak dapat menyimpan konten tabel dan penyimpanan bawaan Chrome akan macet menampilkan pesan 'harap tunggu' untuk halaman hasil.

Bagian-bagian lain pada halaman tidak penting, hanya isi di dalam tabel, jadi saya memutuskan untuk menemukan cara untuk melakukan itu tetapi menghabiskan satu jam untuk menganalisis kode sumber dan melihat informasi dari alat pengembang f12 tetapi tidak bisa cara untuk menyimpan isi tabel saja.

Berikut adalah halaman web: http://m.marine.gov.mo/seawayScheduled/RealTimeSailing.aspx?type=dataDepartureXML&local=PE&lang=ENG

Terima kasih untuk bantuannya!

Sam
sumber
Halaman jenis ini biasanya menggunakan "AJAX": halaman itu sendiri tidak memiliki data dan beberapa kode JavaScript mengirimkan permintaan HTTP untuk mengambil data telanjang (seperti XML, tampaknya dalam kasus ini), yang kemudian diuraikan dan dimasukkan dalam HTML. Jauh lebih efisien untuk menemukan panggilan itu dan menirunya. Anda menggunakan alat bantu seperti LiveHTTPHeaders (Firefox) atau debugger bawaan untuk menemukan permintaan yang dikirim oleh kode JavaScript.
xenoid
Terima kasih balasannya! Ada 8 baris JavaScript dan 3 baris sumber daya tidak dikenal dengan bantuan LiveHTTPHeaders tetapi semuanya adalah kode dan saya tidak tahu bagaimana mereka dapat mengambil file XML. Maaf tapi saya hanya terbiasa dengan HTML.
Sam

Jawaban:

0

Dan jawabannya adalah:

wget --header 'Content-type: application/json' --header 'Cookie: ASP.NET_SessionId=1bsq4nw4nj30groly5pv5zt3' --post-data='{"local":"PE","type":"dataDepartureXML"}' 'http://m.marine.gov.mo/seawayScheduled/RealTimeSailing.aspx/GetData'

Di mana bit 'ASP.NET ....' adalah cookie yang sayangnya wajib. Cookie ini dikirim ketika Anda mengambil halaman utama. Jadi Anda harus melakukannya sedikit berbeda dengan dua perintah:

  • salah satu yang mendapatkan halaman utama dan membuangnya (tetapi menyimpan cookie di cookie.txt):

    wget --keep-session-cookies --save-cookies cookie.txt 'http://m.marine.gov.mo/seawayScheduled/RealTimeSailing.aspx?type=dataDepartureXML&local=PE&lang=ENG' -O /dev/null
    
  • salah satu yang mendapatkan data, mengirimkan cookie:

    wget --load-cookies cookie.txt --header 'Content-type: application/json' --post-data='{"local":"PE","type":"dataDepartureXML"}' 'http://m.marine.gov.mo/seawayScheduled/RealTimeSailing.aspx/GetData' -O data.json
    

Data yang Anda dapatkan adalah array JSON dengan dua elemen string, yang merupakan HTML mentah. Karakter khusus (tanda kutip, kurung ....) diloloskan sehingga hasilnya tidak terlalu mudah dibaca, sedikit tidak sulit untuk dibersihkan dengan beberapa perubahan global dalam editor.

xenoid
sumber