2011-10-26 2 views
0

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

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

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

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

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

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

ответ

2

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

Позволяет сказать, что

<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, который вы знаете, не меняется, а затем Ярлык внутри этого родителя (который должен быть постоянным, если этот сайт полностью не изменяет структуру, которая является одной из проблем анализ внешних HTML-страниц)

Shai.

+1

Работал отлично. Благодарю. –

0

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

0

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

HtmlWeb htmlWeb = new HtmlWeb(); 
HtmlDocument doc = htmlWeb.Load(/* url */); 
foreach(HtmlNode link in doc.DocumentElement.SelectNodes("//a[@href"]) 
{ 
    // do stuff 
} 
Смежные вопросы