Beranda BlogPengikisan web Pengikisan web dengan C#

Pengikisan web dengan C#

oleh Kadek

Web scraping adalah pemindahan data yang dipublikasikan di Internet dalam bentuk halaman HTML (di situs web) ke lokasi penyimpanan (baik itu file teks atau database).

Kelebihan bahasa pemrograman C# pada web scraping adalah memungkinkan browser untuk diintegrasikan langsung ke dalam form menggunakan C# WebBrowser. Data yang tergores dapat disimpan ke file keluaran apa pun atau ditampilkan di layar.

Dasar-dasar Scraping Web di ASP Net dengan C#

Untuk lingkungan pengembangan C#, Anda dapat menggunakan Visual Studio atau Visual Studio Code. Pilihannya tergantung pada tujuan pengembangan dan kemampuan PC.

Visual Studio adalah lingkungan untuk pengembangan komprehensif aplikasi desktop, seluler, dan server dengan templat siap pakai dan kemampuan untuk mengedit program yang sedang dikembangkan secara grafis.

Visual Studio Code, di sisi lain, adalah shell dasar tempat Anda dapat menginstal paket yang diperlukan. Dibutuhkan lebih sedikit ruang dan waktu CPU.

Jika Anda memilih Visual Studio Code, Anda juga harus menginstal .NET Framework dan .NET Core 3.1. Untuk memastikan semua komponen terpasang dengan benar, masukkan perintah berikut pada baris perintah:

dotnet --version

Jika semuanya berfungsi dengan benar, perintah tersebut akan mengembalikan versi .NET yang diinstal.


Periksa intinya
Periksa intinya

Berperan untuk pengikisan web

Untuk memanfaatkan web scraping secara optimal di C#, ada baiknya menggunakan perpustakaan tambahan. Dan sebelum menggunakan perpustakaan, Anda harus mengetahui semua perpustakaan C# untuk web scraping. Yang paling umum digunakan adalah PhantomJS dengan Selenium, HtmlAgilityPack dengan ScrapySharp dan Puppeteer Sharp.

Dapatkan Data dengan Selenium dan PhantomJS Web Scraping C#

Untuk menggunakan PhantomJS, pustaka web scraping C# terbaik, Anda perlu menginstalnya. Cara termudah untuk melakukannya adalah dengan menggunakan Manajer Paket NuGet. Untuk menyertakan paket di Visual Studio, klik kanan tab Referensi di proyek dan ketik “PhantomJS” di bilah pencarian.

Apa itu perpustakaan Selenium?

Namun, ketika seseorang berbicara tentang PhantomJS, yang mereka maksud adalah PhantomJS dengan Selenium. Untuk menggunakan PhantomJS dengan Selenium, Anda juga harus menginstal paket berikut:

  1. Selenium.WebDriver.

  2. Dukungan selenium.

Ini dapat dilakukan dengan menggunakan NuGet. Untuk menggunakan NuGet dalam Visual Studio Code, cukup instal manajer paket NuGet dengan GUI:


NuGet dengan GUI
NuGet dengan GUI

Atau tidak:


NuGet tanpa GUI
NuGet tanpa GUI

Untuk mendapatkan semua judul di halaman, cukup gunakan:

using (var driver = new PhantomJSDriver())
{
    driver.Navigate().GoToUrl("http://example.com/");
    var titles = driver.FindElements(By.ClassName("title"));
    foreach (var title in titles)
    {
        Console.WriteLine(title.Text);
    }
}

Kode sederhana ini menemukan semua elemen dengan judul kelas dan mengembalikan semua teks di dalamnya.

Selenium mengandung banyak fungsi untuk menemukan elemen yang Anda butuhkan. Sebuah elemen dapat dicari dengan XPath, pemilih CSS atau tag HTML. Misalnya, untuk menemukan elemen berdasarkan XPathnya, seperti kolom input, dan meneruskan nilai, cukup gunakan:

driver.FindElement(By.XPath(@".//div")).SendKeys("c#");

Untuk mengklik elemen apa pun, misalnya tombol konfirmasi, Anda dapat menggunakan kode berikut:

driver.FindElement(By.XPath(@".//input(@id='searchsubmit')")).Click();

Untuk apa perpustakaan Selenium?

Selenium adalah perpustakaan lintas platform dan bekerja dengan sebagian besar bahasa pemrograman, memiliki dokumentasi yang lengkap dan ditulis dengan baik serta komunitas yang aktif.

Menggunakan Selenium dengan PhantomJS adalah solusi bagus yang memungkinkan penyelesaian berbagai tugas pengikisan, termasuk pengikisan halaman dinamis. Namun, ini memerlukan sumber daya yang cukup intensif.

HtmlAgilityPack untuk memulai dengan cepat

Jika situs web tidak terlindungi dari bot dan semua konten yang diperlukan segera disediakan, solusi sederhana dapat digunakan – pustaka Html Agility Pack, pustaka web scraping C# lainnya. Ini adalah salah satu perpustakaan paling populer untuk scraping di C#. Koneksi juga dilakukan melalui paket NuGet.

Apa itu HtmlAgilityPac?

Perpustakaan ini membuat pohon DOM dari HTML. Masalahnya adalah Anda harus memuat sendiri kode halamannya. Untuk memuat halaman cukup gunakan kode berikutnya:

using (WebClient client = new WebClient())
{    string html = client.DownloadString("http://example.com");
    //Do something with html then
}

Untuk kemudian menemukan beberapa elemen pada halaman, Anda dapat menggunakan XPath, misalnya:

HtmlNodeCollection links = document.DocumentNode.SelectNodes(".//h2/a");
foreach (HtmlNode link in links)
    Console.WriteLine("{0} - {1}", link.InnerText, link.GetAttributeValue("href", "")); 

Untuk apa HtmlAgilityPac digunakan?

HtmlAgilityPac adalah opsi tingkat pemula yang lebih mudah dan bagus untuk pemula. Ada juga situs web khusus dengan contoh aplikasi. Ini lebih sederhana dari Selenium dan tidak mendukung beberapa fitur, tetapi bagus untuk proyek yang tidak terlalu rumit.

Html Agility Pack memungkinkan Anda menyematkan browser dalam bentuk Windows, membuat aplikasi desktop lengkap.

Pengikisan Web C# dengan ScrapySharp

Untuk menyertakan paket dalam Visual Studio, klik kanan tab Referensi di proyek dan ketik "ScrapySharp" di bilah pencarian.

Untuk menambahkan paket ini dalam Visual Studio Code, tulis di baris perintah:

dotnet add package ScrapySharp

Apa itu perpustakaan ScrapySharp?

ScrapySharp adalah pustaka web scraping open source untuk bahasa pemrograman C# yang memiliki paket NuGet. Selain itu, ScrapySharp adalah ekstensi Html Agility Pack untuk menggores struktur data menggunakan pemilih CSS dan mendukung halaman web dinamis.

Untuk mengambil dokumen HTML menggunakan ScrapySharp, seseorang dapat menggunakan kode berikut:

static ScrapingBrowser browser = new ScrapingBrowser(); 
static HtmlNode GetHtml(string url){
    WebPage webPage = browser.NavigateToPage(new Uri(url));
    return webPage.Html;
}

Untuk apa perpustakaan ScrapySharp?

Jadi tidak intensif sumber daya seperti Selenium, tetapi juga mendukung kemampuan merayapi halaman web dinamis. Namun jika ScrapySharp sudah cukup untuk menyelesaikan tugas sehari-hari, untuk tugas yang lebih kompleks lebih baik menggunakan Selenium.

Dalang untuk mengikis tanpa kepala

Puppeteer adalah pustaka Node.js yang menyediakan API tingkat tinggi untuk mengontrol Chrome atau Chromium tanpa kepala atau berinteraksi dengan protokol DevTools. Namun ada juga pembungkus untuk digunakan di C# – Puppeteer Sharp, yang memiliki paket NuGet.

Apa itu Perpustakaan Dalang?

Dalang menawarkan kemampuan untuk bekerja dengan browser tanpa kepala dan terintegrasi dengan sebagian besar aplikasi.

Dalang menyediakan dokumentasi yang ditulis dengan baik dan contoh penggunaan di situs resmi. Aplikasi yang paling sederhana misalnya:

using var browserFetcher = new BrowserFetcher();
await browserFetcher.DownloadAsync(BrowserFetcher.DefaultChromiumRevision);
var browser = await Puppeteer.LaunchAsync(new LaunchOptions
{
    Headless = true
});
var page = await browser.NewPageAsync();
await page.GoToAsync("http://www.google.com");
await page.ScreenshotAsync(outputFile);

Untuk apa Perpustakaan Dalang?

Dalang juga mendukung mode tanpa kepala, yang memungkinkan Anda mengurangi waktu CPU dan konsumsi RAM.

Pustaka pengikisan web C# terbaik

Bergantung pada proyek, tujuannya, dan kemampuan Anda, perpustakaan terbaik untuk berbagai kasus berbeda-beda. Oleh karena itu, untuk menyederhanakan proses pemilihan dan membantu Anda menemukan pustaka web scraping C# yang paling sesuai, kami telah menyusun tabel perbandingan semua pustaka yang dibahas hari ini.

perpustakaan

Keterangan

Keuntungan

Kekurangan

PhantomJS

Mengintegrasikan PhantomJS dengan Selenium untuk web scraping

Memungkinkan Anda mengikis situs web dinamis

Sumber daya intensif, memerlukan instalasi tambahan PhantomJS

selenium

Perpustakaan lintas platform dengan dokumentasi ekstensif dan komunitas aktif

Mendukung berbagai metode pencarian elemen (XPath, CSS Selector, HTML Tag)

Mungkin lebih lambat dibandingkan perpustakaan lain dan mungkin memerlukan lebih banyak kode untuk melakukan tindakan tertentu

HtmlAgilityPack

Membuat pohon DOM dari HTML dan menyediakan antarmuka yang ramah pengguna

Cocok untuk proyek yang lebih sederhana dan pemula, tidak diperlukan integrasi browser

Tidak mendukung fitur-fitur canggih tertentu dari Selenium

ScrapySharp

Perpanjangan HtmlAgilityPack dengan dukungan untuk pemilih CSS dan halaman web dinamis

Memberikan kemampuan untuk memindai halaman web dinamis, yang lebih hemat sumber daya dibandingkan Selenium

Dokumentasi dan dukungan komunitas yang terbatas, mungkin tidak menangani skenario kompleks seefektif Selenium

Dalang Tajam

Pembungkus C# untuk Puppeteer yang mengontrol Chrome atau Chromium tanpa kepala dan berinteraksi dengan DevTools

Mendukung mode tanpa kepala, terdokumentasi dengan baik, mengurangi waktu CPU dan konsumsi RAM

Memerlukan pemasangan browser Chrome atau Chromium tanpa kepala, mungkin dengan kurva pembelajaran untuk pemula

Sekarang Anda sudah bisa melihat perbedaan tujuan, kelebihan dan kekurangan masing-masing pilihan, kami berharap akan lebih mudah bagi Anda untuk menentukan pilihan yang tepat.

Proksi C# untuk pengikisan web

Beberapa situs web memiliki pemeriksaan dan jebakan deteksi bot yang mencegah pengikis mengumpulkan banyak data. Namun, ada juga solusinya.

Misalnya, Anda dapat menggunakan browser tanpa kepala untuk meniru tindakan pengguna sebenarnya, meningkatkan penundaan antar iterasi, atau menggunakan proxy.

Contoh penggunaan proxy:

public static void proxyConnect()‌;
WebProxy proxy = new WebProxy();‌
proxy.address = “http://IP:Port”;‌
HTTPWebRequest req = (HTTPWebRequest); 
WebRequest.Create(“https://example.com/”);‌
req.proxy = proxy;‌

Server proxy adalah suatu keharusan bagi setiap web scraper C#. Ada banyak pilihan seperti layanan SmartProxy, Luminati Network, Blazing SEO. Proxy gratis tidak selalu cocok untuk tujuan tersebut: sering kali lambat dan tidak dapat diandalkan. Anda juga dapat membuat jaringan proxy Anda sendiri di server, misalnya menggunakan Scrapoxy, API sumber terbuka.

Siapa pun yang menggunakan proxy terlalu lama berisiko terkena larangan IP atau daftar hitam. Untuk menghindari pemblokiran, Anda dapat menggunakan proxy perumahan yang berputar. Dengan memilih lokasi tertentu untuk dikikis dan terus-menerus mengubah alamat IP, pengikis bisa menjadi kebal terhadap pemblokiran alamat IP.

Solusi alternatifnya adalah dengan menggunakan API kami di scraper Anda, yang memungkinkan pengumpulan data yang diminta dan secara efektif menghindari pemblokiran tanpa memasukkan captcha.

Baca juga tentang proxy untuk scraping

Kesimpulan dan temuan

C# adalah pilihan yang baik untuk membuat scraper desktop. Jumlah perpustakaan untuk ini lebih sedikit dibandingkan NodeJS atau Python, tetapi fungsinya tidak lebih buruk. Selain itu, jika parser yang sangat aman diperlukan, C# menawarkan lebih banyak opsi untuk implementasi.

Pustaka yang dipertimbangkan memungkinkan pembuatan proyek yang lebih kompleks yang memerlukan data, dapat menganalisis banyak halaman, dan mengekstrak data. Tentu saja, tidak semua perpustakaan tercantum dalam artikel, tetapi hanya perpustakaan yang paling fungsional dan memiliki dokumentasi yang baik. Namun, selain yang terdaftar, ada perpustakaan pihak ketiga lainnya, yang tidak semuanya memiliki paket NuGet.

Pos terkait

Tinggalkan Komentar