Wie erhält man den Titel und den href-Wert eines Links separat mit dem HTML Agility Pack?

.net c# html-agility-pack

Frage

Ich versuche eine Seite herunterzuladen, die eine Tabelle wie diese enthält

<table id="content-table">
  <tbody>
    <tr>
      <th id="name">Name</th>
      <th id="link">link</th>
    </tr>

    <tr class="tt_row">

      <td class="ttr_name">
       <a title="name_of_the_movie" href="#"><b>name_of_the_movie</b></a>
       <br>
       <span class="pre">message</span>
      </td>

      <td class="td_dl">
        <a href="download_link"><img alt="Download" src="#"></a>
      </td>

    </tr>

    <tr class="tt_row"> .... </tr>
    <tr class="tt_row"> .... </tr>
  </tbody>
</table>

Ich möchte den Namen des Films aus td class = "ttr_name" extrahieren und den Link von td class = "td_dl" herunterladen

Dies ist der Code, mit dem ich Tabellenzeilen durchlaufen habe

<table id="content-table">
  <tbody>
    <tr>
      <th id="name">Name</th>
      <th id="link">link</th>
    </tr>

    <tr class="tt_row">

      <td class="ttr_name">
       <a title="name_of_the_movie" href="#"><b>name_of_the_movie</b></a>
       <br>
       <span class="pre">message</span>
      </td>

      <td class="td_dl">
        <a href="download_link"><img alt="Download" src="#"></a>
      </td>

    </tr>

    <tr class="tt_row"> .... </tr>
    <tr class="tt_row"> .... </tr>
  </tbody>
</table>

Zur Zeit habe ich keine Ahnung, wie man den nameNode und den linkNode überprüft und Daten daraus extrahiert

jede Hilfe würde geschätzt werden

Grüße

Akzeptierte Antwort

Ich kann es jetzt nicht testen, aber es sollte etwas unter den folgenden Linien sein:

    string name= namenode.Element("a").Element("b").InnerText;
    string url= linknode.Element("a").GetAttributeValue("href","unknown");

Beliebte Antwort

    public const string UrlExtractor = @"(?: href\s*=)(?:[\s""']*)(?!#|mailto|location.|javascript|.*css|.*this\.)(?<url>.*?)(?:[\s>""'])";

    public static Match GetMatchRegEx(string text)
    {
        return new Regex(UrlExtractor, RegexOptions.IgnoreCase).Match(text);
    }

Hier ist, wie Sie alle Href Url extrahieren können. Ich verwende diese Regex in einem meiner Projekte, Sie können sie an Ihre Bedürfnisse anpassen und sie so umschreiben, dass sie dem Titel entspricht. Ich denke, es ist bequemer, sie in großen Mengen zu vergleichen




Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum