Saya sedang berpikir untuk mencoba Beautiful Soup , paket Python untuk pengikisan HTML. Apakah ada paket pengikisan HTML lain yang harus saya lihat? Python bukan keharusan, saya sebenarnya tertarik mendengar tentang bahasa lain juga.
Ceritanya sejauh ini:
- Python
- Rubi
- .BERSIH
- Perl
- Jawa
- JavaScript
- PHP
- Kebanyakan dari mereka
XPathExpression
dapat digunakan (yang ada sejak Java 1.5)Jawaban:
Setara dengan Ruby di dunia dengan Beautiful Soup adalah why_the_lucky_stiff's Hpricot .
sumber
Di dunia .NET, saya merekomendasikan HTML Agility Pack. Tidak sedekat beberapa opsi di atas (seperti HTMLSQL), tetapi sangat fleksibel. Ini memungkinkan Anda membuat HTML yang tidak terbentuk dengan baik seolah-olah itu XML yang dibentuk dengan baik, sehingga Anda dapat menggunakan XPATH atau hanya mengulangi beberapa node.
http://www.codeplex.com/htmlagilitypack
sumber
BeautifulSoup adalah cara terbaik untuk menggores HTML. Pekerjaan saya sebelumnya membuat saya melakukan banyak pengikisan dan saya berharap saya tahu tentang BeautifulSoup ketika saya mulai. Ini seperti DOM dengan banyak opsi yang lebih berguna dan jauh lebih pythonic. Jika Anda ingin mencoba Ruby, mereka mem-porting BeautifulSoup dengan menyebutnya RubyfulSoup tetapi belum diperbarui untuk sementara.
Alat bermanfaat lainnya adalah HTMLParser atau sgmllib.SGMLParser yang merupakan bagian dari pustaka Python standar. Ini bekerja dengan memanggil metode setiap kali Anda memasukkan / keluar tag dan menemukan teks html. Mereka seperti Expat jika Anda terbiasa dengan itu. Pustaka ini sangat berguna jika Anda akan mem-parsing file yang sangat besar dan membuat pohon DOM akan lama dan mahal.
Ekspresi reguler tidak terlalu diperlukan. BeautifulSoup menangani ekspresi reguler sehingga jika Anda membutuhkan kekuatannya, Anda dapat menggunakannya di sana. Saya katakan pergi dengan BeautifulSoup kecuali Anda membutuhkan kecepatan dan jejak memori yang lebih kecil. Jika Anda menemukan parser HTML yang lebih baik di Python, beri tahu saya.
sumber
Saya menemukan HTMLSQL menjadi cara yang sangat sederhana untuk screenscrape. Dibutuhkan beberapa menit untuk mendapatkan hasilnya.
Pertanyaannya sangat intuitif - seperti:
Sekarang ada beberapa alternatif lain yang mengambil pendekatan yang sama.
sumber
Pustaka Python lxml bertindak sebagai pengikat Pythonic untuk pustaka libxml2 dan libxslt. Saya suka khususnya dukungan XPath dan pencetakan cukup-struktur XML dalam memori. Ini juga mendukung parsing HTML yang rusak. Dan saya tidak berpikir Anda dapat menemukan pustaka / binding Python lain yang mengurai XML lebih cepat dari lxml.
sumber
Untuk Perl, ada WWW :: Mechanize.
sumber
Python memiliki beberapa opsi untuk pengikisan HTML selain Beatiful Soup. Berikut ini beberapa lainnya:
WWW:Mechanize
. Memberi Anda objek seperti browser untuk berinteraksi dengan halaman weblibwww
. Mendukung berbagai opsi untuk melintasi dan memilih elemen (mis., Pemilihan XPath dan CSS)sumber
'Simple HTML DOM Parser' adalah pilihan yang baik untuk PHP, jika Anda terbiasa dengan pemilih jQuery atau JavaScript maka Anda akan menemukan diri Anda di rumah.
Temukan di sini
Ada juga posting blog di sini.
sumber
Mengapa belum ada yang menyebutkan JSOUP untuk Java? http://jsoup.org/
sumber
The templatemaker utilitas dari Adrian Holovaty (dari Django ketenaran) menggunakan pendekatan yang sangat menarik: Anda makan itu variasi halaman yang sama dan "belajar" di mana "lubang" untuk data variabel yang. Ini bukan HTML spesifik, jadi itu akan baik untuk mengikis konten plaintext lainnya juga. Saya telah menggunakannya juga untuk PDF dan HTML yang dikonversi ke plaintext (masing-masing dengan pdftotext dan lynx).
sumber
Saya tahu dan menyukai Screen-Scraper .
Screen-Scraper adalah alat untuk mengekstraksi data dari situs web. Otomasi Layar-Scraper:
Penggunaan umum:
Teknis:
Tiga edisi screen-scraper:
sumber
Pertama-tama saya akan mencari tahu apakah situs tersebut menyediakan server API atau RSS Feed untuk mengakses data yang Anda butuhkan.
sumber
Scraping Stack Overflow sangat mudah dengan Sepatu dan Hpricot .
sumber
Pilihan lain untuk Perl adalah Web :: Scraper yang didasarkan pada Ruby's Scrapi . Singkatnya, dengan sintaks yang bagus dan ringkas, Anda bisa mendapatkan scraper yang kuat langsung ke struktur data.
sumber
Saya sudah cukup sukses dengan HtmlUnit , di Jawa. Ini adalah kerangka kerja sederhana untuk menulis unit test pada UI web, tetapi sama-sama berguna untuk pengikisan HTML.
sumber
Yahoo! Bahasa Query atau YQL dapat digunakan bersama dengan jQuery, AJAX, JSONP untuk menyaring mengikis halaman web
sumber
Alat lain untuk .NET adalah MhtBuilder
sumber
Ada solusi ini juga: netty HttpClient
sumber
Saya menggunakan Hpricot di Ruby. Sebagai contoh, ini adalah potongan kode yang saya gunakan untuk mengambil semua judul buku dari enam halaman akun HireThings saya (karena mereka tampaknya tidak memberikan satu halaman dengan informasi ini):
Cukup lengkap. Semua yang datang sebelum ini adalah impor perpustakaan dan pengaturan untuk proxy saya.
sumber
Saya banyak menggunakan Beautiful Soup dengan Python. Ini jauh lebih baik daripada pemeriksaan ekspresi reguler, karena berfungsi seperti menggunakan DOM , bahkan jika HTML berformat buruk. Anda dapat dengan cepat menemukan tag dan teks HTML dengan sintaksis yang lebih sederhana daripada ekspresi reguler. Setelah Anda menemukan elemen, Anda bisa mengulanginya dan anak-anaknya, yang lebih berguna untuk memahami konten dalam kode daripada dengan ekspresi reguler. Saya berharap Beautiful Soup ada bertahun-tahun yang lalu ketika saya harus melakukan banyak screencraping - itu akan menyelamatkan saya banyak waktu dan sakit kepala karena struktur HTML sangat buruk sebelum orang mulai memvalidasinya.
sumber
Meskipun dirancang untuk pengujian web .NET , saya telah menggunakan kerangka kerja WatiN untuk tujuan ini. Karena berbasis DOM, cukup mudah untuk menangkap HTML, teks, atau gambar. Baru-baru ini, saya menggunakannya untuk membuang daftar tautan dari kueri namespace MediaWiki All Pages ke dalam spreadsheet Excel. Berikut VB.NET kode fragement cukup kasar, tetapi bekerja.
sumber
Implementasi algoritma parsing HTML5 : html5lib (Python, Ruby), Validator.nu Parser HTML (Java, JavaScript; C ++ dalam pengembangan), Hubbub (C), Twintsam (C #; akan datang).
sumber
Anda akan menjadi bodoh untuk tidak menggunakan Perl .. Di sini nyala api ..
Teliti modul-modul berikut dan ginsu setiap goresan di sekitarnya.
sumber
Saya telah menggunakan LWP dan HTML :: TreeBuilder dengan Perl dan telah menemukan mereka sangat berguna.
LWP (kependekan dari libwww-perl) memungkinkan Anda terhubung ke situs web dan mengikis HTML, Anda bisa mendapatkan modul di sini dan buku O'Reilly tampaknya online di sini .
TreeBuilder memungkinkan Anda membangun pohon dari HTML, dan dokumentasi serta sumber tersedia dalam HTML :: TreeBuilder - Parser yang membuat pohon sintaksis HTML .
Mungkin ada terlalu banyak mengangkat masih harus dilakukan dengan sesuatu seperti pendekatan ini. Saya belum melihat modul Mekanisasi yang disarankan oleh jawaban lain, jadi saya bisa melakukannya.
sumber
Di Jawa, Anda dapat menggunakan TagSoup .
sumber
Nah, jika Anda ingin itu dilakukan dari sisi klien hanya menggunakan browser Anda memiliki jcrawl.com . Setelah merancang layanan scrapping Anda dari aplikasi web ( http://www.jcrawl.com/app.html ), Anda hanya perlu menambahkan skrip yang dibuat ke halaman HTML untuk mulai menggunakan / menyajikan data Anda.
Semua logika scrapping terjadi pada browser melalui JavaScript. Semoga bermanfaat. Klik tautan ini untuk contoh langsung yang mengekstrak berita terbaru dari tenis Yahoo .
sumber
Anda mungkin sudah memiliki sebanyak itu, tetapi saya pikir inilah yang ingin Anda lakukan:
sumber
Saya mendapatkan hasil yang beragam dalam .NET menggunakan SgmlReader yang awalnya dimulai oleh Chris Lovett dan tampaknya telah diperbarui oleh MindTouch .
sumber
Saya suka fungsi ImportXML (URL, XPath) Google Spreadsheets '.
Ini akan mengulangi sel di kolom jika ekspresi XPath Anda mengembalikan lebih dari satu nilai.
Anda dapat memiliki hingga 50
importxml()
fungsi pada satu spreadsheet.Plugin Web RapidMiner juga cukup mudah digunakan. Itu dapat melakukan posting, menerima cookie, dan dapat mengatur agen-pengguna .
sumber
Saya juga sangat sukses menggunakan Jaxer + jQuery Aptana untuk mem-parsing halaman. Ini tidak secepat atau 'seperti script', tetapi pemilih jQuery + JavaScript asli / DOM adalah penyelamat pada halaman yang lebih rumit (atau salah bentuk).
sumber