Страницы: 1
RSS
Как занести данные веб запросов в таблицу?
 
Здравствуйте, есть 5 веб запросов, как загружать одну ячейку из каждого веб запроса A155, все остальное не нужно
Упростить веб запрос и занести его в один лист, не загружать лишнего по веб запросу, а лишь статистику просмотра или по вашему усмотрению сделать это другим способом
Главный результат на листе в таблице на примере
Изменено: next777pro - 21.08.2016 20:03:27
 
Цитата
2.3. Приложите файл(ы) с примером (общим весом не более 100 Кб) в реальной структуре и форматах данных того, что есть сейчас и того, что хотелось бы на выходе.
Да, здорово, помесились в 100 кБ.
Но зачем столько данных в листах запросов? Чем больше лишней информации, тем меньше помогающих. И, наоборот, простой пример увеличивает шансы на помомощь.
Вам об этом еще не говорили?
 
vikttur, вытянуть нужное из запросов пока не получилось
 
Цитата
next777pro написал: загружать одну ячейку из каждого веб запроса A155, все остальное не нужно
ОДНУ ячейку! А в файле на листах по 800 строк.
Неужели для примера мало 10-ти строк? Неужели Вы не в состоянии изменить под себя то, что покажут в примере с 10-ю строками?
 
vikttur,10 строк, то можно было, но они фоново обновляются по веб запросу из интерента и берут всю страницу
 
vikttur, вот читаю везде, все перелазил, пока не нашел, и самое интересное в веб запросе нет каких либо таблиц, чтобы отдельно захватить и не загружать всю страницу
 
То ли я непонимаю, о чем речь, то ли Вы меня не поймете.
Я не о запросе толкую, а о примере, который Вы показываете форуму.

Есть web-запрос... На самом деле в примере не запрос, а данные, получаемые по запросу.
Неужели нельзя ДЛЯ ПРИМЕРА записать на лист несколько строк из запроса и указать, что именно искать: всегда строку №5 (в примере у нас ведь только 10 строк, не 800)  или данные конкретного типа, которые находятся в этой строке 5?
А когда получите решение, не составит труда изменить так, чтобы поиск был не в 5, а в 155 строке

Теперь понятно, что я хотел донести?
 
vikttur, надо получить из веб запросов в 5 листах одну ячейку с каждой A155 и очистить от текста, формулой я уже сделал в примере, то есть результат уже у меня есть, метод работы упростить может получиться, а то слишком сложным он у меня вышел, я могу загнать запросы в один лист, но хотелось. чтобы запросы не загружали столько данных а лишь часть из них где есть нужные для ввода в таблицу, для этого я дал ссылку чтобы можно посмотреть на сайте где эти данные находятся
вытянуть 42 598   551 просмотров, A155 лист запрос1 +  ссылка прилагается на сайт
=//= 1 536 987 просмотров,  A155 лист запрос2 +  ссылка =//=
=//= 1 442 508 просмотров,  A155 лист запрос3 +  ссылка =//=
=//= 223 936 просмотров,  A155 лист запрос4 +  ссылка =//=
=//= 339 047 просмотров,  A155 лист запрос5 +  ссылка =//=

Упростить работу запросов, макросом, чтобы не загружать все и вышло как в таблице

перезалил файл-пример
42 598   551
1 536 987
1 442 508
223 936
339 047
Изменено: next777pro - 21.08.2016 20:03:52
 
Цитата
Неужели для примера мало 10-ти строк?  Неужели Вы не в состоянии изменить под себя то, что покажут в примере с 10-ю строками?
Да уж... Не дошло.
 
Пример текста не нужен.Надо обрабатывать html страницы.
Могу помочь функцией для извлечения показов.Как скачать текст страницы полно примеров в сети.
Код
Function youtube(S)
    S = Replace(S, Chr(160), " ")
    Set RegExp = CreateObject("VBScript.RegExp")
    RegExp.IgnoreCase = True
    RegExp.Pattern = "<ul class=""pl\-header\-details"">(.+?)<li>([0-9\s]+)пр"
    If RegExp.test(S) Then
        youtube = Replace(RegExp.Execute(S)(0).SubMatches(1), " ", "")
    End If
End Function
 
Doober, Спасибо большое, сейчас проверю
функция показа уже есть)
А вот в ячейке A154 есть количество видео в плейлисте, вот с ним бы помочь
Изменено: next777pro - 21.08.2016 21:08:53
 
Вы собираете данные с вебстраниц,тогда изучайте регулярки и разметку html.
Код
   RegExp.Pattern = "<ul class=""pl\-header\-details"">(.+?)<li>(.+?)</li><li>([0-9\s]+)пр"
  If RegExp.test(S) Then
       видео= RegExp.Execute(S)(0).SubMatches(1)
        показы= Replace(RegExp.Execute(S)(0).SubMatches(2), " ", "")     
    End If
Изменено: Doober - 21.08.2016 21:19:51
 
Doober,да заинтересовался уже этим ) Благодарю
 
Doober, эта функция показывает 0 или я не  так делаю?
=youtube("http://www.youtube.com/playlist?list=PLIb_c95oir-1TbF5CTVJAmjkyli5_2o5a")
 
Цитата
next777pro написал:
Упростить работу запросов, макросом, чтобы не загружать все
Подтолкну. Загрузит с веб страницы все, только не на лист, а в переменную:
Код
url = "ваша ссылка"
With CreateObject("MSXML2.XMLHTTP")
    .Open "POST", url, False
    .Send
    S = .responseText
    QtyView = youtube(S)
End With
и используем функции Doober'а.
 
Jungl, и как свести чтобы работало =youtube("http://www.youtube.com/playlist?list=PLIb_c95oir-1TbF5CTVJAmjkyli5_2o5a")

есть один пример показ просмотров видео, на таком примере бы собрать
Код
Function YOUTUBEVIEW(ByVal URL As String) As Long
    Dim t$, v$
'---------------
    With CreateObject("msxml2.xmlhttp")
        .Open "GET", URL, False
        .send
        Do: DoEvents: Loop Until .ReadyState = 4
        t = .responsetext
    End With
    With CreateObject("htmlFile")
        .Body.innerHTML = t
        For Each tg In .GetElementsByTagName("div")
            If tg.className = "watch-view-count" Then
                v = tg.innertext
                Exit For
            End If
        Next
    End With
    With CreateObject("VBScript.RegExp")
        .Global = True
        .Pattern = "\D+"
        YOUTUBEVIEW = .Replace(v, "")
    End With
End Function
Изменено: next777pro - 21.08.2016 21:45:42
 
next777pro, специально для вас:
гифка

p.s. 3 основные замечания, которые помогут вам более детально понимать происходящее в коде:
1. Точки останова и клавиша F8
2. Local и Immediate windows
3. google.com/yandex.ru :)
 
Jungl, дело в том, что url -ов много, один url не нужен
 
Цитата
next777pro написал: дело в том, что url -ов много, один url не нужен
что  вам мешает использовать цикл?..
на вашем примере:
Код
For Each rng In Range("F2:F6")
'сюды вставляем код выше, где url = rng
Next
 
Jungl, это понятно, проверю, а одну целую функцию сделать возможно?
в принципе range не подойдет, в моей таблице будет стоять сортировка по убыванию
Изменено: next777pro - 21.08.2016 22:09:16
 
с функцией
 
marchenkoan, это очень круто) а я уже не надеялся сегодня получить результат
Спасибо большое
 
я не причем, предыдущие товарищи в рот все положили, осталось только проглотить  ;)
 
marchenkoan, Jungl, Doober, Всем огромное спасибо)
 
Для статистики количества видео у меня тоже получилось сегодня )
=Yout_video("url")
Код
Function Yout_video(url As String) As Long

With CreateObject("MSXML2.XMLHTTP")
    .Open "POST", url, False
    .Send
     Yout_video = youtubefiles(.responseText)
End With
End Function

Function youtubefiles(S As String)
Dim RegExp As Object
S = Replace(S, Chr(160), " ")
Set RegExp = CreateObject("VBScript.RegExp")
RegExp.IgnoreCase = True
RegExp.Pattern = "<ul class=""pl\-header\-details"">(.+?)<li>([0-9\s]+)ви"
    If RegExp.test(S) Then
       youtubefiles = RegExp.Execute(S)(0).SubMatches(1)
    End If
End Function
Изменено: next777pro - 22.08.2016 19:00:04
 
marchenkoan, Jungl, Doober, Есть продолжение к вопросу, пробую вытянуть с этого сайта https://www.youtube.com/user/georgiamargali/about
такие данные 2 531 подписчик        • 3 760 758 просмотров
хочу получить 2 531 в 1-й функции, не получилось
Код
Function youtubestat(S As String)
Dim RegExp As Object
S = Replace(S, Chr(160), " ")
Set RegExp = CreateObject("VBScript.RegExp")
RegExp.IgnoreCase = True
RegExp.Pattern = "<div class=""about-metadata-stats branded-page-box-padding"">(.+?)<div class=""about-stats"">(.+?)<span class=""about-stat""><b>([0-9\s]+)"
    If RegExp.test(S) Then
       'youtubestat = Replace(RegExp.Execute(S)(0).SubMatches(2), " ", "")
       youtubestat = RegExp.Execute(S)(0).SubMatches(1)
    End If
End Function 
хочу получить 3 760 758 в 2-й функции, тоже не получилось, что не так сделал?
Код
Function youtubepodp(S As String)
Dim RegExp As Object
S = Replace(S, Chr(160), " ")
Set RegExp = CreateObject("VBScript.RegExp")
RegExp.IgnoreCase = True
RegExp.Pattern = "<div class=""about-metadata-stats branded-page-box-padding"">(.+?)<div class=""about-stats"">(.+?)<span class=""about-stat"">([0-9\s]+)ïî"
    If RegExp.test(S) Then
       'youtubepodp = Replace(RegExp.Execute(S)(0).SubMatches(2), " ", "")
       youtubepodp = RegExp.Execute(S)(0).SubMatches(1)
    End If
End Function

 
Замените
Код
RegExp.Pattern = "<span class=""about-stat""><b>([0-9\s]+)</b> подписч"

и
Код
RegExp.Pattern = "<span class=""about-stat"">(.+?)<b>([0-9\s]+)</b> просмот"
Код
youtubestat = Replace(RegExp.Execute(S)(0).SubMatches(0), " ", "")
youtubestat = Replace(RegExp.Execute(S)(0).SubMatches(1), " ", "")
Изменено: marchenkoan - 22.08.2016 23:17:28
 
marchenkoan,Спасибо
Огромная благодарность, все вышло на отлично
Изменено: next777pro - 22.08.2016 21:53:28
 
marchenkoan, Не могу вытащить Like и dislike
лайк и дислайк находятся в одинаковом <span class="yt-uix-button-content"> ** </span>
Like

Dislike
Страницы: 1
Наверх