C# ile masaüstü programı yardımıyla Google da arama yaparak, arama sonuçlarında çıkan sitelerin başlıklarını ve site adreslerini nasıl alırız konusuna göz atacağız. Her programlama dilinde olduğu gibi c# ta da Google dan sonuçları çekmek için birden fazla yöntem bulunuyor. C# Google arama yapma için gönderilecek istekleri bir webbrowser yardımıyla gönderbileceğiniz gibi render alınmadan sadece istek atarak html kodları alarak yapabiliriz.
Ben Google arama motoruna istek göndermek ve gelen verileri parçalamak için HtmlAgilityPack i kullanacağım. http://html-agility-pack.net/download adresini kullanarak indirme işlemini yapabilirsiniz. Microsoft Visual Studio içinde bulunan nuget paket yükleyicisini kullanarak indirebilir ve projenize dahil edebilirsiniz.
Bunun için öncelikle “Solution Explorer” penceresine gelin. Eğer ekranda göremiyorsanız View menüsünden açabilirsiniz. Solution Explorer dan References in üzerine sağ tıklayın ve oradan açılan pencereden “Manage Nuget Packages…” ı tıklayarak açın. Arama kutusuna HtmlAgilityPack yazın ve çıkan sonuçlardan yapımcılar arasında ZZZ projects in olduğu paketi seçin. Sağ tarafında Install yazısına tıklayarak indirip projeye dahil edilmesini sağlayın.
Bundan sonra desing kısmına gelerek 3 tane textbox ekleyeceğiz. Bir tanesi arama yapacağımız kelimeyi yazmak için. Diğer ikisi ise arama sonuçları parçaladıktan sonra bir tanesine başlıkları diğerine site adreslerini yazdırmak için kullanacağız. Bir tanede kelimeyi yazdıktan sonra arama yaptırmak için bir buton ekleyin. Ekledikten sonra buton üzerine çift tıklayarak kod kısmına gelin.
https://gist.github.com/fluupo/10fd42379a89a5cde04dd6c3282795c7
Adresindeki kodlarını butonun işlem yapacağı fonksiyonun içine yapıştırın. Kendinize göre düzenleyerek kullanabilirsiniz.
- tbKelime, arama yapılacak kelimenin çekileceği textbox.
- tbBasliklar, arama sonuçlarındaki sitelerin titlelerinin yazılacağı textbox.
- tbSiteler, parse ettiğimiz sitelerin urlleri.
c# siteden veri çekme botu yapıyorum html agility pack kullanarak çok ilerledim. normalde çekilen veri bazen gelmiyor bunun sorunu ne olaibilir? verileri çektiğim yer websitesi. xml veriler değil acaba oradan mı kaynaklanıyor sorun.
soket veriler çoğunlukla gelmez.. python içinde selenium öneririm..
HtmlAgilityPack c# kullanarak sitelerden veri çekmeye çalışıyorum. bazen dom dan dolayı sıkıntı çıkıyor. regex öğrenebileceğim bir yer varmı?