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ąć?
0
2
Trzeba zacząć od nauki c# i .NET.
Potem jakiś HttpClient i operacje na stringach.
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; }
}
0
Trochę to trwało ale zakumałem, dzięki za ten przykład west