Nouveau sur C# ici et pour exécuter des tâches asynchrones. J'essaye de gratter quelques informations d'album de musique d'un site Web. La recherche de la page Web produit un objet JSON en texte brut, mais je n'arrive pas à accéder aux informations du DOM. Voici ce que j'ai essayé (en utilisant HtmlAgilityPack):Scrape JSON à partir de la page Web avec C#
using HtmlAgilityPack;
using System;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApp1 {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
public async Task<String> AlbumScraper(string albumname) {
HtmlWeb web = new HtmlWeb();
string albumurl = Uri.EscapeUriString("https://www.metal-archives.com/search/ajax-album-search/?field=title&query=" + albumname);
Console.Write(albumurl);
var albumdoc = await Task.Factory.StartNew(() => web.Load(albumurl));
string albumjson = "";
if (albumdoc.DocumentNode != null) {
albumjson = albumdoc.DocumentNode.InnerText;
}
return albumjson;
}
private async void Form1_Load(object sender, EventArgs e) {
string rawtext = await AlbumScraper("rust+in+peace");
Console.Write(rawtext);
}
}
}
Comment puis-je saisir le texte JSON généré? Je peux le voir clairement quand je charge le « albumurl » URL ...
Pourquoi ne pas utiliser un simple http get demande d'obtenir les données JSON puis l'analyser dans un objet? –
Pourquoi essayez-vous de charger en HTML/XML? Il retourne JSON pas une page web, donc il n'y a pas d'infos DOM. Juste analyser la réponse en utilisant un désérialiseur JSON comme JSON.NET –