ссылки в список xpath

  • Автор темы Автор темы glinko
  • Дата начала Дата начала

glinko

Client
Регистрация
18.11.2015
Сообщения
4
Реакции
4
Баллы
3
Приветствую.
Не силен в xpath. Подскажите, как вытянуть ссылки <а href со всей страницы (включая рекламные блоки)?

Делал по примеру отсюда: http://zennolab.com/discussion/thre...-shag-raboty-s-ehlementami.20830/#post-141316
пытаюсь забирать кодом:
Код:
Развернуть Свернуть Копировать
var links = project.Lists["Links"];
string xpath_exp = ".//a";
var action_ev = "get|href";
var set_action ="";
var linksCollectionLength = CommonCode.FindElementsByXpath(instance, xpath_exp);
for (int i = 1; i < linksCollectionLength.Length; i++)
{
    xpath_exp = ".//a[" + i.ToString() + "]";
var linksCollection = CommonCode.FindElementAndExecuteAction(instance, xpath_exp, action_ev, set_action);
links.Add(linksCollection);
}

Например для яндекса.ру в список дает семь ссылок, хотя linksCollectionLength получает 123 ссылки...
 
Такие вещи проще по топорному сделать:
C#:
Развернуть Свернуть Копировать
Tab tab = instance.MainTab;
if (tab.IsBusy) tab.WaitDownloading();
// get document
Document doc = tab.MainDocument;

// find element by attribute
HtmlElementCollection heCol = doc.FindElementsByXPath(@"//a");

var data = heCol.AttributesToString("href").Split(new string[] {Environment.NewLine},0).ToList();

project.Lists["Links"].AddRange(data);
 
  • Оценить
Реакции: glinko
спасибо! то что надо!
 
Дабы не плодить темы, спрошу здесь.
В коде выше, строка
string xpath_exp = ".//a";
Проблема в том, что она находит как http:\\, , tel: так и mailto:
Как сделать так, что бы находило только http:\\ , https:\\ ?
 
Дабы не плодить темы, спрошу здесь.
В коде выше, строка
string xpath_exp = ".//a";
Проблема в том, что она находит как http:\\, , tel: так и mailto:
Как сделать так, что бы находило только http:\\ , https:\\ ?
xPath:
C#:
Развернуть Свернуть Копировать
.//a[not(contains(@href,'tel:')) and not(contains(@href,'mailto:'))]
 
Спасибо тебе добрый человек. буду щас тестить!
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)