Всем привет!
Делаю парсер через foreach с использованием Xpath.
При переборе всех строк в таблице и нахождении нужного слова, мне нужно спарсить ссылку с подходящей строки. Но у кнопки нет ссылки (нет href), при наведении на неё отображается общая ссылка для всех кнопок. Как мне быть в этой ситуации?
При взятии "DOM" все ссылки из всех строк отображаются (в общем коде страницы их нет). Но как мне это поможет я не знаю.
Допустим я беру DOM - var dom = instance.ActiveTab.DomText;
Но мне нужны ссылки только тех строк, где есть нужное слово. Как мне это реализовать?
Регулярка для всех ссылок есть.
Могу сделать через FindElementsByAttribute вместо FindElementsByXPath, если будет подсказка.
Делаю парсер через foreach с использованием Xpath.
При переборе всех строк в таблице и нахождении нужного слова, мне нужно спарсить ссылку с подходящей строки. Но у кнопки нет ссылки (нет href), при наведении на неё отображается общая ссылка для всех кнопок. Как мне быть в этой ситуации?
При взятии "DOM" все ссылки из всех строк отображаются (в общем коде страницы их нет). Но как мне это поможет я не знаю.
Допустим я беру DOM - var dom = instance.ActiveTab.DomText;
Но мне нужны ссылки только тех строк, где есть нужное слово. Как мне это реализовать?
Регулярка для всех ссылок есть.
Могу сделать через FindElementsByAttribute вместо FindElementsByXPath, если будет подсказка.
Код:
(SyncObjects.ListSyncer) {
var ids_parsedList = project.Lists["ids_parsed"];
var urls = project.Lists["urls"];
Tab Tab1 = instance.ActiveTab;
//получаем все строки из таблицы с сайта
HtmlElementCollection colRows = Tab1.FindElementsByXPath("//table[@class='es-reestr-tbl its']");
//перебираем каждую строку
foreach(HtmlElement elRow in colRows){
//получаем данные нужного элемента конкретной строки
string strCellOne = elRow.FindChildByXPath(".//span[@class='es-el-name']", 0).GetAttribute("innerHtml");
if ((strCellOne.Contains("нужное слово") || strCellOne.Contains("нужное слово 2")) && (strCellOne.Contains("нужное слово 3") || strCellOne.Contains("нужное слово 4"))) {
//забираем данные из второй ячейки и по аналогии из остальных ячеек этой строки
// ВОТ У ЭТОГО ЭЛЕМЕНТА НЕТ ССЫЛКИ
string strCellTwo = elRow.FindChildByXPath("./div[@class='element-in-one-row']/a", 0).GetAttribute("href");
string strCellThree = elRow.FindChildByXPath(".//span[@class='es-el-code-term']", 0).GetAttribute("innerHtml");
//записываем данные в список
urls.Add(strCellTwo);
// ids_parsedList.Add(strCellThree);
}
}
}
Последнее редактирование: