Zadanie z pobierania danych

0

Witam, mam zadanie na uczelnie napisać program który pobierze nagłówki z dowolnej strony i później pozwoli na operacje na tych tekstach. Np zliczenie liter. Musi przechowywać do 5 ostatnich pobrań. Późniejsze prezentacja danych jest dowolna. Problem w tym że nie znam C# i .NET. Czy mogę prosić o podpowiedzi od czego zacząć?

2

Trzeba zacząć od nauki c# i .NET.
Potem jakiś HttpClient i operacje na stringach.

1

pobierze nagłówki z dowolnej strony

klik i klik

pozwoli na operacje na tych tekstach. Np zliczenie liter

klik

Musi przechowywać do 5 ostatnich pobrań.

klik

Późniejsze prezentacja danych jest dowolna

klik

Czy mogę prosić o podpowiedzi od czego zacząć?

Od google

0

OK, pobrałem sobie stronke kodem i chciałem sobie wyszukac nagłówki, ale zauważyłem że nie pobiera mi w ogóle całej strony. Mogę prosić o pomoc?

private static async void GetHtmlAsync()
{
var url = "przykładowa_strona";

        var httpClient = new HttpClient();
        var html = await httpClient.GetStringAsync(url);

        var htmlDocument = new HtmlDocument();

        Console.WriteLine(html);
        htmlDocument.LoadHtml(html);

        var Posts = htmlDocument.DocumentNode.Descendants("title")
            .Where(node => node.GetAttributeValue("PostId", "")
            .Equals("a-post-params")).ToList();

        Console.WriteLine();
    }
1

"dziwne, u mnie działa". Pobiera mi całą zawartość strony. Może napisz o jaką stronę chodzi, bo może w niej się coś doładowuje dynamicznie albo trzeba udawać, że jest się przeglądarką?

1
 class Program
{
    static void Main(string[] args)
    {
        var wrapper = new ForProgrammersWrapper();
        var thread = wrapper.GetThread("https://4programmers.net/Forum/C_i_.NET/320847-zadanie_z_pobierania_danych");
    }
}

public class ForProgrammersWrapper
{
    public ForProgrammersThread GetThread(string url)
    {
        var web = new HtmlWeb();
        var document = web.Load(url);

        var firstPost = document.DocumentNode.SelectSingleNode("//div[@id='first-post']");

        var title = document.DocumentNode.SelectSingleNode("//div[@id='index']//a").InnerText;
        var id = firstPost.SelectSingleNode("//div[@class='post-content']").GetAttributeValue("data-post-id", "");
        var content = firstPost.SelectSingleNode("//div[@class='post-content']").InnerText.Trim();
        var votes = firstPost.SelectSingleNode("//strong[@class='vote-count']").InnerText;
        var author = firstPost.SelectSingleNode("//span[@class='badge badge-creator']/a").InnerText;

        return new ForProgrammersThread()
        {
            Id = Convert.ToInt32(id),
            Author = author,
            Content = content,
            Title = title,
            Votes = Convert.ToInt32(votes)
        };
    }
}

public class ForProgrammersThread
{
    public int Id { get; set; }
    public string Author { get; set; }
    public string Title { get; set; }
    public string Content { get; set; }
    public int Votes { get; set; }
}

screenshot visual studio

0

Trochę to trwało ale zakumałem, dzięki za ten przykład west

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