AngleSharp adalah perpustakaan .NET yang memberi Anda kemampuan untuk menguraikan hyper-teks berbasis sudut sudut seperti HTML, SVG, dan MathML. XML tanpa validasi juga didukung oleh perpustakaan. Aspek penting dari Anglesharp adalah bahwa CSS juga dapat diuraikan. Parser yang disertakan dibangun di atas spesifikasi W3C resmi. Ini menghasilkan representasi DOM HTML5 portabel yang sempurna dari kode sumber yang diberikan dan memastikan kompatibilitas dengan hasil di browser hijau. Juga fitur DOM standar seperti querySelector atau querySelectorAll Work untuk traversal pohon.
⚡⚡ Bermigrasi dari Anglesharp 0,9 ke Anglesharp 0,10 atau lebih baru (termasuk 1.0)? Lihatlah dokumentasi migrasi kami. ⚡⚡
BrowsingContext seperti tab browser - kendalikan dari .net!). Keuntungan dibandingkan perpustakaan serupa seperti HTMLAgilityPack adalah bahwa DOM yang terpapar menggunakan API yang ditentukan W3C resmi, yaitu, bahwa hal -hal seperti querySelectorAll tersedia di Anglesharp. Parser juga menggunakan spesifikasi HTML 5.1, yang mendefinisikan penanganan kesalahan dan koreksi elemen. Perpustakaan Anglesharp berfokus pada kepatuhan standar, interaktivitas, dan ekstensibilitas. Oleh karena itu memberikan pengembang web yang bekerja dengan C# semua kemungkinan seperti yang mereka ketahui dari menggunakan DOM di browser modern mana pun.
Kinerja Anglesharp cukup dekat dengan kinerja browser. Bahkan halaman yang sangat besar dapat diproses dalam milidetik. Anglesharp mencoba meminimalkan alokasi memori dan menggunakan kembali elemen secara internal untuk menghindari pembuatan objek yang tidak perlu.
Contoh sederhana akan menggunakan situs web Wikipedia untuk pengambilan data.
var config = Configuration . Default . WithDefaultLoader ( ) ;
var address = "https://en.wikipedia.org/wiki/List_of_The_Big_Bang_Theory_episodes" ;
var context = BrowsingContext . New ( config ) ;
var document = await context . OpenAsync ( address ) ;
var cellSelector = "tr.vevent td:nth-child(3)" ;
var cells = document . QuerySelectorAll ( cellSelector ) ;
var titles = cells . Select ( m => m . TextContent ) ;Atau sama dengan tipe eksplisit:
IConfiguration config = Configuration . Default . WithDefaultLoader ( ) ;
string address = "https://en.wikipedia.org/wiki/List_of_The_Big_Bang_Theory_episodes" ;
IBrowsingContext context = BrowsingContext . New ( config ) ;
IDocument document = await context . OpenAsync ( address ) ;
string cellSelector = "tr.vevent td:nth-child(3)" ;
IHtmlCollection < IElement > cells = document . QuerySelectorAll ( cellSelector ) ;
IEnumerable < string > titles = cells . Select ( m => m . TextContent ) ;Dalam contoh yang kita lihat:
Setiap koleksi di Anglesharp mendukung pernyataan LINQ. Anglesharp juga menyediakan banyak metode ekstensi yang berguna untuk koleksi elemen yang tidak dapat ditemukan di DOM resmi.
Anglesharp telah dibuat sebagai perpustakaan .NET Standard 2.0 yang kompatibel. Ini termasuk, tetapi tidak terbatas pada:
Dokumentasi Anglesharp terletak di folder Docs. Lebih banyak contoh, praktik terbaik, dan informasi umum dapat ditemukan di sana. Dokumentasi ini juga berisi daftar pertanyaan yang sering diajukan.
Informasi lebih lanjut juga tersedia dengan mengikuti beberapa referensi hiper yang disebutkan dalam wiki. Artikel mendalam akan diterbitkan di Codeproject, dengan tautan ditempatkan di wiki di Github.
Proyek ini bertujuan untuk membawa implementasi yang solid dari W3C DOM untuk HTML, SVG, MathML, dan CSS ke CLR - semuanya ditulis dalam C#. Idenya adalah bahwa Anda pada dasarnya dapat melakukan segalanya dengan DOM di C# yang dapat Anda lakukan di JavaScript (plus, tentu saja, lebih banyak).
Sebagian besar DOM disertakan, meskipun beberapa mungkin masih melewatkan implementasi (sepenuhnya / benar) mereka. Tujuan untuk v1.0 adalah untuk semua bagian yang relevan secara praktis diterapkan sesuai dengan spesifikasi W3C resmi (dengan ekstensi yang berguna oleh Whatwg).
API dekat dengan spesifikasi DOM4, namun, penamaan telah disesuaikan untuk diterapkan dengan konvensi .NET. Namun demikian, untuk membuat Anglesharp benar -benar berguna untuk, misalnya, mesin JavaScript, atribut telah ditempatkan pada antarmuka yang sesuai (dan metode, properti, ...) untuk menunjukkan status bidang dalam spesifikasi resmi. Ini memungkinkan pembuatan objek DOM otomatis dengan API resmi.
Ini adalah proyek jangka panjang yang pada akhirnya akan menghasilkan parser yang canggih untuk hiper-teks berbasis braket sudut paling penting.
Harapan kami adalah membangun komunitas di sekitar penguraian web dan perpustakaan dari proyek ini. Sejauh ini kami memiliki kontribusi besar, tetapi tujuan itu tidak sepenuhnya tercapai. Ingin membantu? Hubungi kami!
Jika Anda tahu beberapa fitur yang saat ini hilang, dan Anda bersedia menerapkan fitur tersebut, maka kontribusi Anda lebih dari disambut! Juga jika Anda memiliki ide yang sangat keren - jangan malu, kami ingin mendengarnya.
Jika Anda memiliki ide bagaimana meningkatkan API (atau apa yang hilang) maka posting / pesan juga diterima. Misalnya ada diskusi yang sedang berlangsung tentang beberapa gaya yang telah digunakan oleh Anglesharp (misalnya, HTMLDocument atau HtmlDocument ) di masa lalu. Pada akhirnya Anglesharp berhenti menggunakan HTMLDocument (setidaknya terlihat di luar perpustakaan). Sekarang Anglesharp menggunakan nama seperti IDocument , IHtmlElement dan sebagainya. Perubahan ini tidak akan mungkin terjadi tanpa diskusi yang bermanfaat seperti itu.
Proyek ini selalu mencari kontributor tambahan. Bahkan jika Anda tidak memiliki kode untuk berkontribusi, melainkan ide untuk perbaikan, laporan bug atau kesalahan dalam dokumentasi. Ini adalah kontribusi yang membuat proyek ini aktif.
Diskusi langsung dapat dilakukan dalam obrolan gitter kami, yang mendukung menggunakan akun GitHub.
Informasi lebih lanjut ditemukan dalam pedoman kontribusi. Semua kontributor dapat ditemukan di file kontributor.
Proyek ini juga telah mengadopsi Kode Etik yang ditentukan oleh Kontributor Perjanjian untuk mengklarifikasi perilaku yang diharapkan di komunitas kami.
Untuk informasi lebih lanjut, lihat Kode Etik .NET Foundation.
Jika Anda sering menggunakan Anglesharp, tetapi Anda tidak punya waktu untuk mendukung proyek dengan partisipasi aktif, Anda mungkin masih tertarik untuk memastikan bahwa proyek -proyek Anglesharp menjaga lampu menyala.
Oleh karena itu kami membuat model pendukung melalui bountysource. Donasi apa pun diterima dan sangat dihargai. Kami sebagian besar akan menghabiskan uang untuk waktu pengembangan yang berdedikasi untuk meningkatkan Anglesharp di mana ia perlu ditingkatkan, ditambah berinvestasi dalam eko-sistem utilitas web di .NET (misalnya, dalam mesin Javascript, parser lain, atau renderer untuk AngleSharp untuk menyebutkan beberapa proyek yang luar biasa).
Kunjungi BountySource untuk lebih jelasnya.
Anglesharp ditulis dalam versi terbaru C# dan dengan demikian membutuhkan Roslyn sebagai kompiler. Menggunakan IDE seperti Visual Studio 2019+ direkomendasikan pada Windows. Atau, vScode (dengan Omnisharp atau implementasi protokol server bahasa lain yang sesuai) harus menjadi alat pilihan pada platform lain.
Kode mencoba menjadi sebersih mungkin. Khususnya aturan berikut digunakan:
-Async saat tersediaNamun, yang lebih penting adalah penggunaan tes yang tepat. Fitur baru apa pun harus dilengkapi dengan satu set tes untuk mencakup fungsionalitas dan mencegah regresi.
Changelog yang sangat rinci ada. Jika Anda hanya tertarik pada rilis besar, maka lihatlah rilis GitHub.
Proyek ini didukung oleh .NET Foundation.
Anglesharp dirilis menggunakan lisensi MIT. Untuk informasi lebih lanjut, lihat file lisensi.