Как найти ссылку в документе HTML?(С #) - PullRequest
0 голосов
/ 26 октября 2011

У меня есть форма C # с объектом WebBrowser. Этот объект содержит HTML-документ. И в этом документе есть ссылка, на которой нет маркеров (без идентификатора и имени) Как я могу получить доступ к этому элементу ??

Я пытался использовать это:

webBrowser1.Document.GetElementsByTagName("a")[n] 

Но это не очень полезно, потому что, если на странице будет какая-то новая ссылка, мне нужно будет перестроить всю программу.

Я также не могу выполнить циклы по документу или получить подстроку Document.ToString (), потому что тогда я не могу щелкнуть ссылку.

Было бы здорово, если бы вы могли дать мне несколько советов.

Ответы [ 3 ]

2 голосов
/ 26 октября 2011

В такой ситуации лучше всего всегда найти «Якорь», то есть место в документе, которое никогда не изменится.

Допустим,

<a href="http://site.com">dada</a>

Не имеет идентификатора или имени, поэтому вы можете проверить, есть ли у родительского элемента искомого элемента идентификатор.

<div id="parentDiv">
      Some text
      Some other stuff
      <a href="http://site.com">The link you're looking for</a>
</div>

Таким образом, вы можете получить parentDiv, который, как вы знаете, не изменится, а затем тег A внутри этого родителя (который должен быть постоянным, если этот веб-сайт полностью не изменит структуру, что является одной из проблем при разборе внешних HTML-страниц). )

Шай.

1 голос
/ 26 октября 2011

вы можете использовать Html Agility Pack. и выберите ссылки по xpath

 HtmlWeb htmlWeb  = new HtmlWeb();
 HtmlDocument doc = htmlWeb.Load(/* url */);
 foreach(HtmlNode link in doc.DocumentElement.SelectNodes("//a[@href"])
 {
   // do stuff
 }
0 голосов
/ 26 октября 2011

У вас должна быть информация о том, как идентифицировать ссылку. это может быть идентификатор или имя или текст. Если текст всегда один и тот же, проверьте внутренний текст этой ссылки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...