Я пытаюсь загрузить публичный профиль Instagram в статистику извлечения, например, последователей и биографию. Я делаю это в консольном приложении ac # и загружаю HTML с помощью HTML Agility Pack.
Код:
string url = @"https://www.instagram.com/" + Console.ReadLine() + @"/?hl=en";
Console.WriteLine();
HtmlWeb web = new HtmlWeb();
HtmlDocument document = web.Load(url);
document.Save(path1);
Когда я его сохраняю, хотя все, что я получаю, это куча скриптов и пустой экран:
Мне было интересно, как сохранить html, как только все скрипты запустили и сформировали контент
Спасибо за предложения о том, как загрузить HTML! В конце концов мне удалось вернуть некоторую информацию instagram. Вот код:
//(This was done using HTML Agility Pack)
string url = @"https://www.instagram.com/" + Console.ReadLine() + @"/?hl=en";
HtmlWeb web = new HtmlWeb();
HtmlDocument document = web.Load(url);
var metas = document.DocumentNode.Descendants("meta");
var followers = metas.FirstOrDefault(_ => _.HasProperty("name", "description"));
if (followers == null) { Console.WriteLine("Sorry, Can't Find Profile :("); return; }
var content = followers.Attributes["content"].Value.StopAt('-');
Console.WriteLine(content);
И HasProperty () & StopAt ()
public static bool HasProperty(this HtmlNode node, string property, params string[] valueArray)
{
var propertyValue = node.GetAttributeValue(property, "");
var propertyValues = propertyValue.Split(' ');
return valueArray.All(c => propertyValues.Contains(c));
}
public static string StopAt(this string input, char stopAt)
{
int x = input.IndexOf(stopAt);
return input.Substring(0, x);
}
Однако это еще не тот ответ, который я ищу. У меня все еще есть обломка HTML, который не структурирован так же, как HTML, который я получаю, когда смотрю на него в Google Chrome. Выполняя некоторые поиски в HTML, мне удалось масштабировать без содержания контент html для метатега, который содержит контент. Это нормально для этого, но если я продолжу этот метод поиска HTML-контента, то он может быть не таким :(
public MainWindow()
{
InitializeComponent();
WB_1.Navigate(@"https://www.instagram.com/" + Console.ReadLine() + @"/?hl=en");
WB_1.LoadCompleted += wb_LoadCompleted;
}
void wb_LoadCompleted(object sender, NavigationEventArgs e)
{
dynamic doc = WB_1.Document;
string htmlText = doc.documentElement.InnerHtml;
}