Menggunakan browser web (IE atau Chrome) saya dapat menyimpan halaman web (.html) dengan Ctl-S, memeriksanya dengan editor teks apa pun, dan melihat data dalam format tabel. Salah satu angka yang ingin saya ekstrak, tetapi bagi banyak, banyak halaman web, terlalu banyak untuk dilakukan secara manual. Jadi saya ingin menggunakan WGET untuk mendapatkan halaman web tersebut satu demi satu, dan menulis program lain untuk mem-parsing .html dan mengambil nomor yang saya inginkan. Tetapi file .html disimpan oleh WGET saat menggunakan URL yang sama dengan browser tidak berisi tabel data. Kenapa tidak? Seolah-olah server mendeteksi permintaan datang dari WGET dan bukan dari browser web, dan memasok halaman web kerangka, kurang tabel data. Bagaimana saya bisa mendapatkan halaman web yang sama persis dengan WGET? - Terima kasih!
INFO LEBIH LANJUT:
Contoh URL yang saya coba ambil adalah: http://performance.morningstar.com/fund/performance-return.action?t=ICENX®ion=usa&culture=en-US di mana string ICENX adalah simbol ticker reksa dana reksa dana , yang akan saya ubah menjadi salah satu dari sejumlah simbol ticker yang berbeda. Ini mengunduh tabel data ketika dilihat di browser, tetapi tabel data tidak ada jika diambil dengan WGET.
Jawaban:
Seperti dicatat oleh roadmr , tabel pada halaman ini dihasilkan oleh javascript. wget tidak mendukung javascript, itu hanya membuang halaman yang diterima dari server (yaitu sebelum kode javascript berjalan) dan karenanya tabel tersebut hilang.
Anda memerlukan peramban tanpa kepala yang mendukung javascript seperti phantomjs :
dengan save_page.js:
Maka jika Anda hanya ingin mengekstraksi beberapa teks, mungkin yang paling mudah adalah merender halaman dengan w3m:
dan / atau memodifikasi skrip phantomjs untuk hanya membuang apa yang Anda minati.
sumber
Anda dapat mengunduh Menggunakan Situs Web Lengkap
wget --mirror
Contoh:
Baris perintah di atas yang ingin Anda jalankan ketika Anda ingin mengunduh situs web lengkap dan tersedia untuk dilihat secara lokal.
Pilihan:
--mirror
menyalakan opsi yang cocok untuk mirroring.-p
mengunduh semua file yang diperlukan untuk menampilkan halaman HTML yang diberikan dengan benar.--convert-links
setelah unduhan, konversikan tautan dalam dokumen untuk tampilan lokal.-P ./LOCAL-DIR
menyimpan semua file dan direktori ke direktori yang ditentukan.Untuk Info lebih lanjut tentang Opsi Wget. Baca selengkapnya artikel ini: Tinjauan Umum Tentang semua Perintah wget dengan Contoh , atau periksa halaman manual Wget .
sumber
Alih-alih
--recursive
, yang hanya akan melanjutkan dan "laba-laba" setiap tautan tunggal di URL Anda, gunakan--page-requisites
. Seharusnya berperilaku persis seperti opsi yang Anda gambarkan di browser grafis.Untuk informasi lebih lanjut, lakukan
man wget
dan cari--page-requisites
opsi (gunakan "/" untuk mencari saat membaca halaman manual).sumber
Jika jawaban server berbeda tergantung pada sumber yang meminta, itu sebagian besar karena variabel HTTP_USER_AGENT (hanya string teks) yang disediakan dengan permintaan dari sumber yang bertanya, menginformasikan server tentang teknologi.
Anda dapat memeriksa agen peramban Anda di sini -> http://whatsmyuseragent.com
Menurut manual WGET, parameter ini harus melakukan pekerjaan
--user-agent=AGENT
.Jika ini tidak membantu, yaitu pemrosesan JavaScript mungkin diperlukan untuk mendapatkan halaman yang sama dengan browser, atau mungkin permintaan yang sesuai dengan parameter GET sehingga server akan menyiapkan jawaban yang tidak memerlukan JavaScript untuk mengisi halaman.
sumber