Zadanie z pobierania danych

Odpowiedz Nowy wątek
2019-01-09 10:10
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ąć?

Pozostało 580 znaków

2019-01-09 10:27
2

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

Pozostało 580 znaków

2019-01-09 14:49
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

edytowany 3x, ostatnio: Ktos, 2019-01-09 20:36
Musi być pusta linia po >, aby nie było częścią cytatu. - Ktos 2019-01-09 20:36

Pozostało 580 znaków

2019-01-09 18:52
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();
    }

Pozostało 580 znaków

2019-01-09 20:58
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ą?

Pozostało 580 znaków

2019-01-10 16:22
 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

edytowany 3x, ostatnio: west, 2019-01-10 16:24
gdzie HtmlWeb pochodzi z HtmlAgilityPack, warto dodać. - Ktos 2019-01-10 18:33

Pozostało 580 znaków

2019-01-11 12:47
0

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

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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