J'essaie de récupérer l'URL associée à un fichier .jpg.
J'ai utilisé divers outils XPath et Inspection à l'intérieur du chrome, mais nous finissent toujours par un résultat dans lequel l'URL est encapsulée. Exemple: p>
la référence absolue xpath: p> retourne: p> ... Chrome, mais aucun résultat en C # (à l'aide du fichier htmlagilitypack) p> Le HTML: p> Le code C # (liste renvoie aucun résultat où xpathQuery est ce qui précède XPath Référence): P> private List<string> returnNodes(string xpathQuery, GeckoWebBrowser geckoWebBrowser)
{
List<string> nodes = new List<string>();
try
{
XPathResult xpathResult = geckoWebBrowser.Document.EvaluateXPath(xpathQuery);
var foundNodes = xpathResult.GetNodes();
foreach (var node in foundNodes)
{
var x = node.TextContent; // get text text contained by this node (including children)
GeckoHtmlElement element = node as GeckoHtmlElement; //cast to access.. inner/outerHtml
string inner = element.InnerHtml;
string outer = element.OuterHtml;
//iterate through child nodes
foreach (var child in node.ChildNodes)
{
nodes.Add(removeCarriageReturnsFromString(child.NodeValue));
}
}
}
catch (Exception ex)
{
MessageBox.Show(xpathQuery + " => " + ex.Message);
}
return nodes;
}
3 Réponses :
Vous pouvez obtenir des attributs dans xpath avec le symbole @ code>, il suffit d'utiliser
/html/body/div[3]/div/div[2]/div[1]/ul[1]/li/img/@src
Bonne suggestion et est mentionné dans de nombreux tutoriels mais ne renvoie rien malheureusement. Pas en chrome et pas dans mon application C #
Au lieu d'utiliser l'ensemble XPath de HTML qui peut être fragile et sujette aux erreurs, vous devez essayer d'identifier un chemin plus unique de votre élément.
J'utiliserais la méthode contient car elle peut surmonter une partie de cette fragilité et est utile lorsque vous n'êtes pas sûr du contenu complet d'un élément. p>
Par exemple, le XPath suivant retournera tous les balises img em> contenant un attribut src em> qui inclut la chaîne .jpg: p> //img[contains(@src, '.jpg')]
Merci, essayé cela aussi, rien, pas même en chrome. Des choses comme: // UL [@ @ class = 'Option de réponse'] // p [@ @ class = 'Content'] Travailler, mais les références relatives impliquant l'attribut "IMG" ne font pas.
J'ai réussi à récupérer l'URL en écrivant ce qui suit. Passez votre référence absolue xPath dans.
private List<string> returnPictureNodes(string xpathQuery, GeckoWebBrowser geckoWebBrowser) { List<string> arrNodes = new List<string>(); try { GeckoImageElement img = (GeckoImageElement)geckoWebBrowser.Document.SelectSingle(xpathQuery); arrNodes.Add(removeCarriageReturnsFromString(img.Src)); } catch (Exception ex) { MessageBox.Show(xpathQuery + " => " + ex.Message); } return arrNodes; }