Yazılım.
CevapSitesi.com Beta!
Çözüm Noktası
Facebook, Twitter, Google+ veya e-posta ile paylaşın.
| Sorular | Makaleler | Üyeler | Etiketler  | İletişim
Soru sormak ya da cevap vermek için;
giriş yapın veya üye olun.

Sosyal medya hesaplarınızla da giriş yapabilirsiniz.

Yazılım Soruları

0

c# döngü ile xpath değiştirmek

Merhaba. Bu projem çalısıyor ama sadece 1 bilgi alabiliyorum. Döngü ile xpath ın içini değiştirebilirmiyim acaba?Şimdiden teşekkürler.


/html/body/div[3]/div/div[3]/div/div[1]/div[1]/div[1]/div[4]/table/tbody/tr[1]/td[2]/div/span

/html/body/div[3]/div/div[3]/div/div[1]/div[1]/div[1]/div[4]/table/tbody/tr[2]/td[2]/div/span

/html/body/div[3]/div/div[3]/div/div[1]/div[1]/div[1]/div[4]/table/tbody/tr[3]/td[2]/div/span
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using HtmlAgilityPack;


namespace WindowsFormsApp8
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        
        // döngü durumu
        bool loop_status = true;

        private void button1_Click(object sender, EventArgs e)

        {
           
            CheckForIllegalCrossThreadCalls = false; // cross-thread hatasını önler
            Thread abc = new Thread(launch);
            abc.Start();

            
        }
        // ana işlem
        private void launch()
        {
            while (loop_status)
            {
                for (int i = 0; i <= 9999; i++)
                {
                    label2.Text = (i.ToString());//sayım yapıyor
                    for (int j = 0; j <= 11; j++)
                    {
                        var url = new Uri("https://canlidoviz.com/kripto-paralar"); // url oluştruduk
                        WebClient client = new WebClient(); // siteye erişim için client tanımladık
                        var html = client.DownloadString(url); //sitenin html lini indirdik
                        HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument(); //burada HtmlAgilityPack Kütüphanesini kullandık
                        doc.LoadHtml(html); // indirdiğimiz sitenin html lini oluşturduğumuz dokumana dolduruyoruz

                        var mlk = doc.DocumentNode.SelectNodes("/html/body/div[3]/div/div[3]/div/div[1]/div[1]/div[1]/div[4]/table/tbody/tr[1]/td[2]/div/span")[0];
                        
                        label1.Text = (mlk.InnerHtml.ToString());
                       

                        Thread.Sleep(1000 - DateTime.Now.Millisecond); // sistem zamanına göre 1 saniyeyi milisaniye olarak eşleştirip sleep uygular.
                        if (loop_status == false)
                        {
                            break; // for döngüsünü durdurur ve main loop durur.
                        }
                    }
                }
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            loop_status = false;
          
        }
    }
}

Soran:18.01.24 16:21
misafir  

1 Cevap

0
// ile başlayan xpath sorgularıyla çoklu etiket seçimleri yapıp döngü kullanılabilir. Belgeye göre etiketler veya özellikleri üzerinden seçim yapabilirsin. Tam olarak yazmaya vaktim yok aman sizin kullandığınız sayfada aşağıdaki gibi bir yol izlenebilir.

           HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
           doc.LoadHtml(html);
           var trs = doc.DocumentNode.SelectNodes("//tr[contains(@itemprop,'itemListElement')]");
           foreach ( var tr in trs )
           {
               var tds = tr.SelectNodes("//td");
               // tds[0].SelectNodes("//span")[0].InnerHtml => Kripto para adı.
               // tds[1].SelectNodes("//span")[0].InnerHtml => Fiyatı
               // tsd[2], tds[3] vs. devam eder.
           }


Cevaplayan: 22.01.24 12:19
cevapsitesi
102,034p 16ü