C# ile web sitesinden veri çekme

salvia61

Decapat
Katılım
1 Şubat 2020
Mesajlar
13
Arkadaşlar kolay gelsin. Yeni öğreniyorum ama ufak bir sorum olacaktı. Bir web sitesinden veri çekmek istiyorum, sadece text olarak. Her şeyi yaptım sorunsuz çalışıyor ama sadece başlıkları alıyor. Tüm içeriğe ulaşmam için yardımcı olur musunuz?

[CODE lang="csharp" title="https.den sonra web sitesi var yazmadım sadece bilginize"]Uri url = new Uri("https://url");

WebClient client = new WebClient();
string html = client.DownloadString(url);
HtmlAgilityPack.HtmlDocument dokuman = new HtmlAgilityPack.HtmlDocument();
dokuman.LoadHtml(html);
HtmlNodeCollection basliklar = dokuman.DocumentNode.SelectNodes("//a");

foreach (var baslik in basliklar)
{
string link = baslik.Attributes["href"].Value;
listBox1.Items.Add(baslik.InnerText);[/CODE]
 
Arkadaşlar kolay gelsin. Yeni öğreniyorum ama ufak bir sorum olacaktı. Bir web sitesinden veri çekmek istiyorum, sadece text olarak. Her şeyi yaptım sorunsuz çalışıyor ama sadece başlıkları alıyor. Tüm içeriğe ulaşmam için yardımcı olur musunuz?

[CODE lang="csharp" title="https.den sonra web sitesi var yazmadım sadece bilginize"]Uri url = new Uri("https://url");

WebClient client = new WebClient();
string html = client.DownloadString(url);
HtmlAgilityPack.HtmlDocument dokuman = new HtmlAgilityPack.HtmlDocument();
dokuman.LoadHtml(html);
HtmlNodeCollection basliklar = dokuman.DocumentNode.SelectNodes("//a");

foreach (var baslik in basliklar)
{
string link = baslik.Attributes["href"].Value;
listBox1.Items.Add(baslik.InnerText);[/CODE]

Resimleri almak istiyorsanız img ile desen yazmanız lazım (desen: Bulmak için kullanılan terim). Bu arada bu Bot'a giriyor her Site'de kullanmayın bunu.
 
C#:
var htmlad = client.DownloadString(url);
var clientad = new WebClient();
var degiskenad = new Uri("URL");
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);
var veri = doc.DocumentNode.SelectNodes("/html/body/div[1]/div[5]/div[4]/div/div/div[1]/div/div[2]/div/div[1]/div/text()")[0];
if (veri != null)
{
label1.Text = "Veri" + veri.InnerHtml;
}

HtmlAgilityPack kullanman lazım. Nuget ile alabilirsiniz.
 
Arkadaşlar kolay gelsin. Yeni öğreniyorum ama ufak bir sorum olacaktı. Bir web sitesinden veri çekmek istiyorum, sadece text olarak. Her şeyi yaptım sorunsuz çalışıyor ama sadece başlıkları alıyor. Tüm içeriğe ulaşmam için yardımcı olur musunuz?

[CODE lang="csharp" title="https.den sonra web sitesi var yazmadım sadece bilginize"]Uri url = new Uri("https://url");

WebClient client = new WebClient();
string html = client.DownloadString(url);
HtmlAgilityPack.HtmlDocument dokuman = new HtmlAgilityPack.HtmlDocument();
dokuman.LoadHtml(html);
HtmlNodeCollection basliklar = dokuman.DocumentNode.SelectNodes("//a");

foreach (var baslik in basliklar)
{
string link = baslik.Attributes["href"].Value;
listBox1.Items.Add(baslik.InnerText);[/CODE]

Burada PHP ile yapmış olduğum bir bot var bunu örnek alarak yapabilirsiniz.

1610647531114.png
 
Hocam scraping deniyor yaptığınız işleme. Bir sürü yolu var yapmanın, nuget paketleri vs. Fakat genel olarak şöyle bir şey deneyebilirsiniz Nugetlarla uğraşmak istemiyorsanız:

[CODE lang="csharp" title="Data collecting html"]System.Net.WebClient wc = new System.Net.WebClient();
string syfdata= wc.DownloadString("http://www.technopat.net/dnm/fdosya.htm");[/CODE]

Bu kod ile bütün sayfayı string çekebiliyor indirebiliyor olmanız lazım.
Not: Bir arkadaş yazmış illegal bir durum diye, fakat bildiğim kadarıyla sitede işlem yapmadığınız sürece tamamen legal. Ayrıca daha detaylı bir anlatım için şu videoyu izleyebilirsiniz:
Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.
 
Hocam tekrar uyarıyorum bunu site kendinizin değilse yapmayın, bot yazmak resmi işlem başlamasına neden olabilir. İzin alıp yapın yapacaksanız. Kendi başıma gelmişti yaptığım bot ile web Sitesin'den veri çekiyordum site sahibi mahkemeye verdi 1 ay mahkeme ile uğraştım.
 
Cevaplarınız için çok teşekkür ederim. Yabancı kaynaklı bi site bir yerde kullanmayacağım kendime saklamayı düşünüyorum.
Ayrıca şöyle açıklayayım sitedeki yazılar akordiyon biçiminde yani bir başlık var altında açılan akordiyonda yazılar var. Benim yazdığımda anasayfadaki tüm başlıkları alabildim ama yazıları alamadım. Dediklerinizi deneyeceğim yeni öğrenen biri için biraz zor olacak ama.. 😅
 
Cevaplarınız için çok teşekkür ederim. Yabancı kaynaklı bir site var bir yerde kullanmayacağım nasıl yapıldığını anlamaya çalışıyorum.
Ayrıca şöyle açıklayayım sitedeki yazılar akordiyon biçiminde yani bir başlık var altında açılan akordiyonda yazılar var. Benim yazdığımda anasayfadaki tüm başlıkları alabildim ama yazıları alamadım. Dediklerinizi deneyeceğim yeni öğrenen biri için biraz zor olacak ama. 😅

İç içe döngü kullanın o zaman içindeki yazıları da çekersiniz.
 
@Eray T hocam böylelikle siteleri arşivleyebiliriz herhalde, değil mi? Kusura bakmayın kafama takıldı sadece.

Hocam site sizinse arşivleyebilirsiniz ancak site sizin değilse veri hırsızlığına giriyor bu iş. Her sitenin altında vardır işte copyright... İzin almadan yaparsanız soluğu mahkemede alabilirsiniz benim başıma geldi üstte bahsettim bakabilirsiniz.

1610648460893.png
 

Geri
Yukarı