c# - Pobieranie ze strony tekstu znajdujący sie w znacznikach

0

Witam, mam taki malutki problem związany z filtracją stringa, w którym jest kod html.

Program ma pobrać stronę YT na której są wszystkie komentarze pod danym filmem i wyciągnąć autorów komentarzy, jest to aplikacja deskopowa.

Chcę aby kod wyciągnął z stringa tekst, który jest w znaczniku span.
oto kod który mam.

 
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string VideoID = "AWR3-RJrVgo";
            WebClient client = new WebClient();
            Byte[] pageData = client.DownloadData(string.Format("http://www.youtube.com/all_comments?v={0}", VideoID));
            string pageHtml = Encoding.UTF8.GetString(pageData);
            StringBuilder sb = new StringBuilder();
            string txt = pageHtml;
            foreach (string s in Regex.Split(txt, "<span class=\"author\">(.*)</span>"))
            {
                sb.Append(s + "\n");
            }
            richTextBox1.Text = sb.ToString();
        }
    }
}

i jest problem gdyż nie wyszukuje i zapisuje do zmiennej sb tylko czysty html wrzuca :( proszę o szybką pomoc w rozwiązaniu problemu. Z góry dziękuje.

PS. Mam coś podobnego na php tylko że przy większej ilości danych się sypie :(

0

Zakladam ze chcesz miec to co jest pomiedzy autor... bo regexsplit dziala tak:

var s = "abc split defg";

to jak dasz Regex.Split(e, "split") dostajesz tablice elementow w tym przyppadku tab[0] == abc, tab[1] == edfg

Aby zrobic to co Ty chcesz, nie split tylko matches: http://msdn.microsoft.com/en-us/library/b9712a7w.aspx

0

Zalozylem konto, bo ciagle zapomninam czegos dodac... skoro wiesz jak wyglada znacznik a potrzebujesz np tylko to co jest miedzy nimi to jak juz znajdzie Ci match'e to musisz usunac, najprosciej (np. w foreach) var s = match.value.remove(match.length-x).remove(0,y); gdzie x i y to ilosc znakow od poczatku (y) i od koncza (x), ktore chcesz tam masz tylko sam tekst

1 użytkowników online, w tym zalogowanych: 0, gości: 1