Hier versuche ich ein Wort aus einer HTML-Seite zu extrahieren. Zum Beispiel gibt es zwei Textfelder (1 und 2). Jetzt versuche ich Stackoverflow Frage ID auf Textbox1 geben und "Frage" Wert auf Textbox2. Zum Beispiel, wenn ich 36 auf textbox1 gebe, sollte dies mir "9 Jahre, 4 Monate" auf textbox2 geben. WebClient webpage = new WebClient(); String html = webpage.DownloadString("https://stackoverflow.com/questions/" + textBox1.Text); MatchCollection match = Regex.Matches(html, FILTERHERE, RegexOptions.Singleline);
Das Problem ist, ich weiß nicht, wie ich meine Ausgabe (FILTERHERE) filtern? Wie kann ich meine Ausgabe auch in textbox2 senden?So extrahieren Sie ein Wort oder einige Wörter aus einer HTML-Seite C#
1
A
Antwort
2
Mit HtmlAgilityPack.
string url = "https://stackoverflow.com/questions/";
var web = new HtmlWeb();
var doc = web.Load(url + textBox1.Text); //the text is "36"
var tag = doc.DocumentNode.SelectSingleNode("//*[@id='qinfo']//td[./p[@class='label-key' and text()='asked']]/following-sibling::td//b");
textBox2.Text = tag.InnerText;
Wenn Sie nicht XPath wissen, gibt es Browser-Erweiterungen für Chrome und Firefox, die für Sie die XPath jedes HTML-Tag bekommt (ich schreibe sie persönlich manuell sie weniger empfindlich auf Veränderungen auf Seitenstruktur zu machen) .
2
Mit Windows Forms-Anwendung WebBrowser
Kontrolle kann verwendet werden wthich wpapps die Mshtml-Bibliothek und stellt verwaltet HTML DOM
. Beispiel für Funktion, die den asked
Text ruft:
private static string GetAskedText(HtmlDocument doc)
{
if (doc == null)
return "document-null";
IEnumerable<mshtml.HTMLDivElement> divs = doc.GetElementsByTagName("div")
.OfType<HtmlElement>()
.Select(e => e.DomElement as mshtml.HTMLDivElement);
foreach (var div in divs)
{
if (string.IsNullOrWhiteSpace(div?.className))
continue;
if (div.className.Trim().ToLower() != "user-info")
continue;
var spans = div.getElementsByTagName("span").OfType<mshtml.HTMLSpanElement>();
foreach (var span in spans)
{
if (string.IsNullOrWhiteSpace(span?.className))
continue;
if (span.className == "relativetime")
{
return span.innerText;
}
}
}
return "not-found";
}
Complete example mit Windows Forms-Anwendung kann von meiner Dropbox heruntergeladen werden.
Verwandte Themen
- 1. So extrahieren Sie ein Wort aus einer Zeichenfolge
- 2. So extrahieren Sie Wörter aus der Textdatei
- 3. So entfernen Sie einige Wörter aus einer Zeichenfolge
- 4. So extrahieren Sie einen dynamischen Teil oder ein Wort aus einer Zeichenfolge in Javascript
- 5. So extrahieren Sie ein Wort aus der Textdatei
- 6. Ein Wort aus einer Zeichenfolge extrahieren
- 7. Extrahieren einzelner Wörter aus Zeichenfolge C++
- 8. C extrahieren Wort aus einer Zeichenfolge zwischen zwei Wörtern
- 9. So wählen Sie ein Wort in einer PDF-Datei aus
- 10. Ruby: So extrahieren Wörter aus String
- 11. Wörter aus Wort-Wörterbuch extrahieren Zeile-für-Zeile
- 12. Extrahieren Sie Symbole und Wörter, ignorieren Zahlen und bestimmte Wörter, aus einer Zeichenfolge
- 13. Extrahieren Sie Wörter oder Zeichen aus dem Ausdruck in Javascript?
- 14. So ersetzen Sie Wörter aus einem String, wenn es ein Wort aus meinem String-Array enthält
- 15. So extrahieren Sie Ebenen aus einer Photoshop-Datei? C#
- 16. Wörter aus dem Audioclip extrahieren
- 17. stringr: extract Wörter ein bestimmtes Wort
- 18. So extrahieren Sie erste und verbleibende Wörter in Postgres
- 19. So extrahieren Sie Text aus einer Audiodatei
- 20. Ein Wort aus einer Textdatei in einen Baum einfügen C
- 21. So extrahieren Sie interger aus einer Zeichenfolge
- 22. Extrahieren Sie unbekannte Wörter aus einem wiederkehrenden Muster
- 23. Extrahieren Sie einige Informationen aus HTML-Code
- 24. Extrahieren Sie die von einer Fuzzy-Abfrage verwendeten Wörter
- 25. Eine Zahl aus einer 1-Wort-Zeichenfolge extrahieren
- 26. So lesen Sie eine bestimmte Nummer (oder ein Wort) aus einer Antwort
- 27. So isolieren Sie ein Wort neben einem angegebenen Wort
- 28. Extrahieren Sie aussagekräftigere Wörter aus der öffentlich verfügbaren Worteinbettung
- 29. wie Wörter zwei oder mehr Wörter in Textdatei C# suchen
- 30. Finden Sie ein Wort und extrahieren Sie die Tabelle aus einer großen Textdatei
Verwenden von Regex auf HTML ist eine [schlechte Idee] (https://Stackoverflow.com/a/1732454/) –
Können Sie dies mit Ihrer eigenen Methode tun? – Leviathan
Verwenden Sie XPath oder css-Selektoren –