- Регистрация
- 07.07.2018
- Сообщения
- 24
- Благодарностей
- 1
- Баллы
- 3
C#:
HtmlElementCollection luboe_imy = null; //все HtmlElementCollection лучше объявлять в самом верху
//начало: подключение таблицы
var package = new ExcelPackage(new FileInfo(@"F:\Зенопостер\ЗЕНО уроки\Tabl_3.xlsx")); //путь к табличке
ExcelWorksheet tabletest = package.Workbook.Worksheets[1]; //где tabletest - имя(любое) – лучше вообще никогда не менять, а 1 - номер листа в excel
//конец: подключение таблицы
int q = 0; //объявляем
int w = 0; //объявляем
int b = 0; //объявляем
var List1 = project.Lists["List1"];// объявляем пер List1 равную списку
while (true)//запускаем цикл
{
project.Variables["List1"].Value = List1[0];// в переменную проекта List1 кладем первую строку
instance.ActiveTab.Navigate(project.Variables["List1"].Value);// переходим на страницу из переменной проекта List1
instance.ActiveTab.WaitDownloading(); //дожидаемся загрузки страницы
List1.RemoveAt(0);//удаляем строку
luboe_imy = instance.ActiveTab.FindElementsByXPath("//*[@class='name']");//парсим : Xpath путь
for(int v=0; v<luboe_imy.Count; v++) //цикл перебора найденных элементов. luboe_imy.Count означает, что цикл будет крутиться до тех пор, пока не закончатся все найденные нами элементы
{
string ssylk = luboe_imy.GetByNumber(v).GetAttribute("innertext"); //кл в переменную ssylk атрибут innertext нашего элемента
project.SendInfoToLog(ssylk); //выводим в лог для самопроверки
b++; //увеличиваем на 1 счетчик строк
tabletest.SetValue(b,3, ssylk); //записываем данные в таблицу: строка, столбец, что записываем
}
luboe_imy = instance.ActiveTab.FindElementsByXPath("//img[contains(@id,'post')]");//парсим : Xpath путь
for(int v=0; v<luboe_imy.Count; v++) //цикл перебора найденных элементов. luboe_imy.Count означает, что цикл будет крутиться до тех пор, пока не закончатся все найденные нами элементы
{
string ssylk = luboe_imy.GetByNumber(v).GetAttribute("id"); //кл в переменную ssylk атрибут innertext нашего элемента
project.SendInfoToLog(ssylk); //выводим в лог для самопроверки
q++; //увеличиваем на 1 счетчик строк
tabletest.SetValue(q,4, ssylk); //записываем данные в таблицу: строка, столбец, что записываем
}
luboe_imy = instance.ActiveTab.FindElementsByXPath("//div[contains(@class,'postbody')]");//парсим : Xpath путь
for(int v=0; v<luboe_imy.Count; v++) //цикл перебора найденных элементов. luboe_imy.Count означает, что цикл будет крутиться до тех пор, пока не закончатся все найденные нами элементы
{
string ssylk = luboe_imy.GetByNumber(v).GetAttribute("outerhtml"); //кл в переменную ssylk атрибут innertext нашего элемента
project.SendInfoToLog(ssylk); //выводим в лог для самопроверки
w++; //увеличиваем на 1 счетчик строк
tabletest.SetValue(w,5, ssylk); //записываем данные в таблицу: строка, столбец, что записываем
}
package.Save(); //сохраняем в таблицу
}
Обрабатывается порядка 4000 строк из листа.
После запуска может обработать 1000 а может и 500 а может и 2000.
Нет никакой логики в завершении цикла.
Входные данные не меняются.
Запускаю после выхода, код продолжает работать.