vk_k14m@vk
02-01-2023, 21:38
На этом форуме вообще можно обсуждать C#? Не уверен.
Начал "изучать" С# около двух недель назад. Хочу создать простенький парсер страницы (не целого сайта). Сейчас я уже могу парсить но через регулярные выражения, и в интернете читал что через них вообще не стоит такое делать. Пишут про API. А API для нужного сайта нет.
Вот как я это делаю сейчас WebClient source = new WebClient();
string reply = source.DownloadString(@"https://www.мой_сайт.com.html");
Match match1 = Regex.Match(reply, "<h1 itemprop=\"name\" id=\"work_name\">(.*?)</h1>");
Match match2 = Regex.Match(reply, "<a href=\"https://www.мой_сайт/profile/=/maker_id/[0-9]*.html\">(.*?)</a>");
Match match3 = Regex.Match(reply, "<td><a href=\"https://www.мой_сайт.com/new/=/year/[0-9]*/mon/[0-9]*/day/[0-9]*/cyear/[0-9]*/cmon/[0-9]*\">(.*?)</a></td>");
Match match4 = Regex.Match(reply, "<td><a href=\"https://www.мой_сайт.com/maniax/new/=/year/([0-9][0-9][0-9][0-9])/mon/02/day/20/cyear/2022/cmon/02\">.*?</a></td>");
Match match5 = Regex.Match(reply, "<a href=\"https://www.мой_сайт.com//work_type/from/icon.work\"><span class=\"icon\" title=\".*?\">(.*?)</span></a>");
MatchCollection match6 = Regex.Matches(reply, "<a href=\"https://www.мой_сайт.com/genre/=/genre/[0-9][0-9][0-9]/from/work.genre\">(.*?)</a>");
EngGameNameTextBox.Text = match1.Groups[1].Value;
EngGameNameTextBox.ForeColor = System.Drawing.SystemColors.WindowText;
DevEngTextBox.Text = match2.Groups[1].Value;
DevEngTextBox.ForeColor = System.Drawing.SystemColors.WindowText;
DateTextBox.Text = match3.Groups[1].Value;
YearNumericUpDown.Text = match4.Groups[1].Value;
TagsTextBox1.Text = match5.Groups[1].Value;
for (int i = 0; i < match6.Count; i++)
{
if (GenreTextBox2.Text == "")
GenreTextBox2.Text = match6[i].Groups[1].Value;
else
GenreTextBox2.Text = GenreTextBox2.Text + ", " + match6[i].Groups[1].Value;
}
Я понимаю что код наверняка кривой, но сейчас речь не о нем.
Как мне сделать все тоже самое но с использованием AngleSharp. Документацию пытался читать, пытался гуглить, пытался на ютубе искать. Везде показывают либо что то склишком абстрактное, либо слишком конкретное, не то что нужно.
Если тут кто знаком с C#, можете подсказать?
Начал "изучать" С# около двух недель назад. Хочу создать простенький парсер страницы (не целого сайта). Сейчас я уже могу парсить но через регулярные выражения, и в интернете читал что через них вообще не стоит такое делать. Пишут про API. А API для нужного сайта нет.
Вот как я это делаю сейчас WebClient source = new WebClient();
string reply = source.DownloadString(@"https://www.мой_сайт.com.html");
Match match1 = Regex.Match(reply, "<h1 itemprop=\"name\" id=\"work_name\">(.*?)</h1>");
Match match2 = Regex.Match(reply, "<a href=\"https://www.мой_сайт/profile/=/maker_id/[0-9]*.html\">(.*?)</a>");
Match match3 = Regex.Match(reply, "<td><a href=\"https://www.мой_сайт.com/new/=/year/[0-9]*/mon/[0-9]*/day/[0-9]*/cyear/[0-9]*/cmon/[0-9]*\">(.*?)</a></td>");
Match match4 = Regex.Match(reply, "<td><a href=\"https://www.мой_сайт.com/maniax/new/=/year/([0-9][0-9][0-9][0-9])/mon/02/day/20/cyear/2022/cmon/02\">.*?</a></td>");
Match match5 = Regex.Match(reply, "<a href=\"https://www.мой_сайт.com//work_type/from/icon.work\"><span class=\"icon\" title=\".*?\">(.*?)</span></a>");
MatchCollection match6 = Regex.Matches(reply, "<a href=\"https://www.мой_сайт.com/genre/=/genre/[0-9][0-9][0-9]/from/work.genre\">(.*?)</a>");
EngGameNameTextBox.Text = match1.Groups[1].Value;
EngGameNameTextBox.ForeColor = System.Drawing.SystemColors.WindowText;
DevEngTextBox.Text = match2.Groups[1].Value;
DevEngTextBox.ForeColor = System.Drawing.SystemColors.WindowText;
DateTextBox.Text = match3.Groups[1].Value;
YearNumericUpDown.Text = match4.Groups[1].Value;
TagsTextBox1.Text = match5.Groups[1].Value;
for (int i = 0; i < match6.Count; i++)
{
if (GenreTextBox2.Text == "")
GenreTextBox2.Text = match6[i].Groups[1].Value;
else
GenreTextBox2.Text = GenreTextBox2.Text + ", " + match6[i].Groups[1].Value;
}
Я понимаю что код наверняка кривой, но сейчас речь не о нем.
Как мне сделать все тоже самое но с использованием AngleSharp. Документацию пытался читать, пытался гуглить, пытался на ютубе искать. Везде показывают либо что то склишком абстрактное, либо слишком конкретное, не то что нужно.
Если тут кто знаком с C#, можете подсказать?