-2
votes

Puis-je extraire des données du fichier html que j'ai téléchargé a quelques JSON

Ceci est le lien vers le fichier HTML que j'ai téléchargé

https: / /drive.google.com/open?id=1Z7A9U0QZSVTLMQDBSVTPYZVZ9ZM73-ZQ P>

à partir de ce fichier à la fin, vous pouvez voir certaines données telles que ceci P>

<div data-react-class="packs/v9/phone/containers/AreaCodeListing" data-react-props="{"areaCodes":[{"phone_prefix":"(202) 200","details":["Sprint"],"location":"Washington, DC","href":"/202-200"},{"phone_prefix":"(202) 201","details":["Verizon"],"location":"Washington, DC","href":"/202-201"},{"phone_prefix":"(202) 202","details":["General Service Carrier"],"location":"Washington, DC","href":"/202-202"},{"phone_prefix":"(202) 203","details":["T-Mobile"],"location":"Washington, DC","href":"/202-203"},{"phone_prefix":"(202) 204","details":["XO Communications"],"location":"Washington, DC","href":"/202-204"}


1 commentaires

Vous n'avez besoin que de href ou d'autres propriétés


3 Réponses :


0
votes

Vous pouvez utiliser des bibliothèques comme HTLmagityPack pour analyser le document HTML, puis extraire le JSON comme requis.


2 commentaires

J'avais mais pas de réponse parce que cette div a réagi de la classe,


Si vous pouvez faire un exemple de code s'il vous plaît, il sera vraiment apprécié



0
votes

Le fichier que vous avez téléchargé n'est pas valide HTML, car il s'agit d'une vue réactive. Par conséquent, des outils tels que HTMLagilityPack ne seront pas très utiles pour vous.

Vous pouvez essayer de voir si vous avez une chance en utilisant des navigateurs sans tête tels que WebKit.net . Vous pourriez être capable d'intervenir quelque part dans le processus de construction du dernier HTML.

En dehors de cela, la seule option que je peux penser est d'utiliser des expressions régulières pour obtenir les données souhaitées dans le fichier. Par exemple: xxx


2 commentaires

Son gentil mais que diriez-vous au lieu de le faire correspondre avec des données-réact-accesses = y N'aquez pas, nous le faisons correspondons avec AreaCodes ou HREF Pouvez-vous faire une regex pour celui-ci? s'il te plaît


Ce qui précède montre que le premier match réussi



0
votes

première approche forte>

Si vous voulez un objet entier de code de secours, essayez la première approche. p> xxx pré>

second approche strong> p>

Si vous n'avez besoin que de la valeur HREF, utilisez une deuxième approche. P>

public List<string> GetAllHref(string htmlString)
{

    List<string> hrefList = new List<string>();

    Regex rgxAttr = new Regex(@"data-react-props=""{(.*?)}""");
    Regex rgxValue = new Regex(@"""{(.*?)}""");

    var attrResult = rgxAttr.Matches(htmlString);

    List<string> attrValues = new List<string>();

    foreach (Match match in attrResult)
    {
        var val = rgxValue.Match(match.Value);
        attrValues.Add(val.Value.Replace("\"{", "{").Replace("}\"", "}"));
    }

    dynamic ob = null;
    foreach (var item in attrValues)
    {
        JavaScriptSerializer js = new JavaScriptSerializer();
        var dn = js.Deserialize<dynamic>(item) as Dictionary<string, object>;
        if (dn != null && dn.ContainsKey("areaCodes"))
            ob = dn["areaCodes"];
    }

    var s = ob as Array;
    foreach (Dictionary<string, object> item in s)
        hrefList.Add(item["href"].ToString());

    return hrefList;
}


2 commentaires

Quelle est la différence entre .*? et. * Dans votre expression régulière?


@Bartvanderdrift pour votre référence s'il vous plaît caisse de ceci Stackoverflow.com/Questtions/3075130/...