[SOLVED] Спарсить все посты с группы вк

AgentRassilok

Известная личность
Регистрация
08.11.2016
Сообщения
1 272
Благодарностей
466
Баллы
83
привет парни, вот группа есть, мне надо все посты спарсить в список
https://vk.com/public77590095

я так понимаю только до конца ее прокрутить и спарсить все или есть еще какие варианты (апи там и тд)?

если до конца прокрутить, подскажите по xpath. есть вот такой код


//Переходим на активную вкладку:
Tab tab1 = instance.GetTabByAddress("page");
if (tab1.IsBusy) tab1.WaitDownloading();

//используя XPath находим последний елемент в поиске яндекс карт (или чего там вы парсите)
HtmlElement he = instance.ActiveTab.MainDocument.FindElementByXPath(сюда вставить нужный код поиска элемента);

// делаем быстрый скролинг ( https://help.zennolab.com/en/v5/zennoposter/5.7/webframe.html#ZennoLab.CommandCenter~ZennoLab.CommandCenter.HtmlElement~ScrollIntoView.html )
if (!he.IsVoid)
{
// scroll view of tab to the html element
he.ScrollIntoView();
}
else
{
project.SendInfoToLog("не нашли елемент, не скролим", true);
return "не нашли елемент, не скролим";
}


если подскажите более быстрый способ буду признателен. спасибо
 

orka13

Client
Регистрация
07.05.2015
Сообщения
2 177
Благодарностей
2 184
Баллы
113
Xpath последней записи там:
Код:
(//div[@class='_post_content'])[last()]
 
  • Спасибо
Реакции: AgentRassilok

evgen2208

Client
Регистрация
12.10.2016
Сообщения
130
Благодарностей
162
Баллы
43
если подскажите более быстрый способ буду признателен. спасибо
Что тебе нужно в итоговом списке?
Ссылки на посты, тексты или контент целиком (текст + фото или что там прикреплено к записи)
 

AgentRassilok

Известная личность
Регистрация
08.11.2016
Сообщения
1 272
Благодарностей
466
Баллы
83

evgen2208

Client
Регистрация
12.10.2016
Сообщения
130
Благодарностей
162
Баллы
43
Не уверен, что самый быстрый, но вот готовый сниппет:
(ссылки проходит поочередно, имей ввиду что там 500+ страниц в этой группе)

Код:
var tab = instance.ActiveTab;
tab.Navigate(@"https://vk.com/wall-77590095?own=1","https://vk.com");
tab.WaitDownloading();
var result = new List<string>();
int count = Convert.ToInt32(Regex.Replace(tab.FindElementById("fw_summary").InnerText,@"\W","").ToString());
for (int i=0;i<count;i=i+20)
{
    tab.Navigate("https://vk.com/wall-77590095?offset="+i.ToString()+"&own=1",tab.URL);
    tab.WaitDownloading();

    result.AddRange(tab.FindElementsByAttribute("div","id","post-77590095","regexp").Select(__id=>__id.FindChildByTag("a",2).GetAttribute("href")));
    
}
project.Lists["Список 1"].AddRange(result);
 

AgentRassilok

Известная личность
Регистрация
08.11.2016
Сообщения
1 272
Благодарностей
466
Баллы
83
Не уверен, что самый быстрый, но вот готовый сниппет:
(ссылки проходит поочередно, имей ввиду что там 500+ страниц в этой группе)

Код:
var tab = instance.ActiveTab;
tab.Navigate(@"https://vk.com/wall-77590095?own=1","https://vk.com");
tab.WaitDownloading();
var result = new List<string>();
int count = Convert.ToInt32(Regex.Replace(tab.FindElementById("fw_summary").InnerText,@"\W","").ToString());
for (int i=0;i<count;i=i+20)
{
    tab.Navigate("https://vk.com/wall-77590095?offset="+i.ToString()+"&own=1",tab.URL);
    tab.WaitDownloading();

    result.AddRange(tab.FindElementsByAttribute("div","id","post-77590095","regexp").Select(__id=>__id.FindChildByTag("a",2).GetAttribute("href")));
   
}
project.Lists["Список 1"].AddRange(result);
спасибо большое, щас уже подсказали запросы + json + api
 

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