Форум программистов, компьютерный форум, киберфорум
Софт: Интернет и сеть, браузеры
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.69/36: Рейтинг темы: голосов - 36, средняя оценка - 4.69
948 / 403 / 323
Регистрация: 12.07.2018
Сообщений: 534

Получить URL из тега HTML

12.08.2020, 18:39. Показов 7896. Ответов 52
Метки html, url (Все метки)

Студворк — интернет-сервис помощи студентам
Можно получать URL из уникального тега HTML?
Code
1
<meta property="og:image" content="https://media-cache.cinematerial.com/p/500x/bqjtx0ki/north-by-northwest-british-movie-poster.jpg
Поиск по слову URL не помог.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.08.2020, 18:39
Ответы с готовыми решениями:

Получить value html-тега
&lt;input type=&quot;hidden&quot; name=&quot;s1&quot; class=&quot;price_field_s1&quot; value=&quot;359&quot; /&gt; &lt;input type=&quot;hidden&quot; name=&quot;s2&quot; class=&quot;price_field_s2&quot; value=&quot;45&quot; /&gt; ...

Получить ссылку из HTML тега
&lt;h3 class=&quot;r&quot;&gt;&lt;a href=&quot;http://www.symantec.com/connect/forums/right-click-menu-add&quot; onmousedown=&quot;return...

Получить атрибуты тега <p> на HTML-странице
Всем привет! Пытаюсь вытащить дискрипшны из-под пинов на странице https://www.pinterest.com/categories/popular/ Делаю вот так For...

52
948 / 403 / 323
Регистрация: 12.07.2018
Сообщений: 534
16.08.2020, 22:55  [ТС]
Студворк — интернет-сервис помощи студентам
Message: 2. Файлы получены!
0
7690 / 2887 / 1110
Регистрация: 06.06.2017
Сообщений: 9,815
17.08.2020, 03:52
Так строку с MsgBox я уже не публиковал, она не нужна, там всё понятно.
Теперь всё устраивает, или нужно ещё более комплексное решение?
1
948 / 403 / 323
Регистрация: 12.07.2018
Сообщений: 534
22.08.2020, 12:43  [ТС]
MsgBox не мешает - удобно знать число файлов, если много.
При желании и потребности можно усложнить, но пока хватит. Спасибо!
0
7690 / 2887 / 1110
Регистрация: 06.06.2017
Сообщений: 9,815
22.08.2020, 16:17
Под комплексным решением подразумевался код из 6-го поста, где в 5 строке перебираются id разных страниц, только в этом случае будет по две, как я понимаю, картинки (вместо одной) с каждой страницы.
1
948 / 403 / 323
Регистрация: 12.07.2018
Сообщений: 534
23.08.2020, 04:15  [ТС]
Тот код хорош для получения по заданным ID - 1 ID = 1 file.
0
7690 / 2887 / 1110
Регистрация: 06.06.2017
Сообщений: 9,815
23.08.2020, 08:07
А здесь вместо списка ID будет список крайних компонентов адреса: north-by-northwest-i53125, slums-of-beverly-hills-i120831 и т. п.
Можно каждую группу картинок в свою папку автоматом кидать.
0
7690 / 2887 / 1110
Регистрация: 06.06.2017
Сообщений: 9,815
24.08.2020, 18:29
Ладно, ждать ответа не буду. Вот скрипт:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
Option Explicit
Dim oFSO, oDict, oHTTP, oHTML, F, i, iURL, Arr, URL, Name, BName, Ext
'—————————————————————————————————————————————————————————————————————
Const URI = "https://www.cinematerial.com/movies/"
Const Adr = "slums-of-beverly-hills-i120831 north-by-northwest-i53125"
'—————————————————————————————————————————————————————————————————————
Set oFSO  = CreateObject("Scripting.FileSystemObject")
Set oDict = CreateObject("Scripting.Dictionary")
Set oHTTP = CreateObject("MSXML2.XMLHTTP.6.0")
Set oHTML = CreateObject("htmlfile")
oHTML.designMode = "on"
 
For Each F in Split(Adr)
  oHTTP.Open "GET", URI & F, False: oHTTP.Send
  oHTML.Write oHTTP.ResponseText: oHTTP.Abort
  For Each iURL in oHTML.links
     If InStr(iURL, "about:") = 1 Then
        iURL = "https://www.cinematerial.com" & Replace(Replace(iURL, "about:blank", ""), "about:", "")
        If InStr(iURL, URI & F & "/p/") = 1 Then oDict.Add iURL, Empty
     End If
  Next
  oHTTP.Abort: Arr = Split(F, "-")
  If oDict.Count Then
     F = Replace(F, "-" & Arr(UBound(Arr)), "")
     If Not oFSO.FolderExists(F) Then oFSO.CreateFolder F
     For Each iURL in oDict.Keys
        oHTTP.Open "GET", iURL, False : oHTTP.Send
        oHTML.Write oHTTP.ResponseText: oHTTP.Abort
        For Each i In oHTML.getElementsByTagName("meta")
           If i.getAttribute("property") = "og:image" Then URL = i.getAttribute("content"): Exit For
        Next: oHTML.Close
        URL = Left(URL, InStrRev(URL, "?") - 1)
        oHTTP.Open "GET", URL, False: oHTTP.Send
        Name = oFSO.GetFileName(URL): BName = oFSO.GetBaseName(Name)
        Ext  = oFSO.GetExtensionName(Name): i = 0
        While oFSO.FileExists(oFSO.BuildPath(F, Name))
           i = i + 1: Name = BName & "_" & i & "." & Ext
        Wend
        With CreateObject("SAPI.SpFileStream")
           .Format.Type = 1: .Open oFSO.BuildPath(F, Name), 3: .Write oHTTP.ResponseBody: .Close
        End With
        oHTTP.Abort
     Next
  End If
  oDict.RemoveAll
Next
MsgBox "Скачивание завершено!", 4160, " Скачивание постеров"
For Each i in Array(oDict, oHTTP, oHTML, oFSO)
  Set i = Nothing
Next
К слову, в предыдущей версии автосчётчик был неправильный.
1
948 / 403 / 323
Регистрация: 12.07.2018
Сообщений: 534
24.08.2020, 21:56  [ТС]
O таком усовершенствовании и думал! Последним (при желании и несложности) улучшением была бы возможность задать крайнюю часть URL (suspect-i94082 the-piano-i107822) в виде a-i94082 a-i107822 (вместо названия - любая латинская буква или буквы), это облегчит подготовку URL. Скрипт на сайте дополнит такой URL. B этом случае достаточно указать IMDb ID без нолей впереди.
0
7690 / 2887 / 1110
Регистрация: 06.06.2017
Сообщений: 9,815
25.08.2020, 01:44
Лучший ответ Сообщение было отмечено Masutin как решение

Решение

Цитата Сообщение от Masutin Посмотреть сообщение
O таком усовершенствовании и думал!
Это хорошо или плохо?
Цитата Сообщение от Masutin Посмотреть сообщение
это облегчит подготовку URL
За константу можно взять 0-i без редиректа, перечисляя только номера:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
Option Explicit
Dim oFSO, oDict, oHTTP, oHTML, n, i, iURL, Arr, URL, Name, BName, Ext
'——————————— Номера на концах адресов страниц с постерами ———————————
Const Num = "120831 53125 94082 107822"
'————————————————————————————————————————————————————————————————————
Set oFSO  = CreateObject("Scripting.FileSystemObject")
Set oDict = CreateObject("Scripting.Dictionary")
Set oHTTP = CreateObject("MSXML2.XMLHTTP.6.0")
Set oHTML = CreateObject("htmlfile")
oHTML.designMode = "on"
 
For Each n in Split(Num)
  oHTTP.Open "GET", "https://www.cinematerial.com/movies/0-i" & N, 0: oHTTP.Send
  oHTML.Write oHTTP.ResponseText: oHTTP.Abort
  For Each iURL in oHTML.links
     If InStr(iURL, "about:") = 1 Then
        iURL = "https://www.cinematerial.com" & Replace(Replace(iURL, "about:blank", ""), "about:", "")
        If InStr(iURL, "/p/") Then oDict.Add iURL, Empty
     End If
  Next
  If oDict.Count Then
     N = Split(oHTML.Title, ")")(0) & ")"
     If Not oFSO.FolderExists(N) Then oFSO.CreateFolder N
     For Each iURL in oDict.Keys
        oHTTP.Open "GET", iURL, False : oHTTP.Send
        oHTML.Write oHTTP.ResponseText: oHTTP.Abort
        For Each i In oHTML.getElementsByTagName("meta")
           If i.getAttribute("property") = "og:image" Then URL = i.getAttribute("content"): Exit For
        Next: oHTML.Close
        URL = Left(URL, InStrRev(URL, "?") - 1)
        oHTTP.Open "GET", URL, False: oHTTP.Send
        Name = oFSO.GetFileName(URL): BName = oFSO.GetBaseName(Name)
        Ext  = oFSO.GetExtensionName(Name): i = 0
        While oFSO.FileExists(oFSO.BuildPath(N, Name))
           i = i + 1: Name = BName & "_" & i & "." & Ext
        Wend
        With CreateObject("SAPI.SpFileStream")
           .Format.Type = 1: .Open oFSO.BuildPath(N, Name), 3: .Write oHTTP.ResponseBody: .Close
        End With
        oHTTP.Abort
     Next
  Else oHTML.Close
  End If
  oDict.RemoveAll
Next
 
MsgBox "Скачивание завершено!", 4160, " Скачивание постеров"
For Each i in Array(oDict, oHTTP, oHTML, oFSO)
  Set i = Nothing
Next
1
948 / 403 / 323
Регистрация: 12.07.2018
Сообщений: 534
26.08.2020, 01:44  [ТС]
хорошо или плохо?
Хорошо! Без описания задачи!
Даже названия папок в красивом виде!
0
7690 / 2887 / 1110
Регистрация: 06.06.2017
Сообщений: 9,815
26.08.2020, 09:57
Ух, ответ точно спустя сутки. Однако ж. )

Цитата Сообщение от Masutin Посмотреть сообщение
Хорошо!
А, я 'и' как 'не' прочёл. Поэтому и была непонятка. Пардон. )
Цитата Сообщение от Masutin Посмотреть сообщение
Даже названия папок в красивом виде!
Сперва был прежний вариант, но с редиректом, который некоторое время забирал, а после подстановки нуля без оного (с результирующим отсутствием имён в адресах) пришла мысль о заголовках.
1
948 / 403 / 323
Регистрация: 12.07.2018
Сообщений: 534
09.09.2020, 17:03  [ТС]
A самозакрытие окна сообщения или вывод не в виде окна?
0
7690 / 2887 / 1110
Регистрация: 06.06.2017
Сообщений: 9,815
09.09.2020, 17:46
Опять это "или". Конкретно что надо?
0
948 / 403 / 323
Регистрация: 12.07.2018
Сообщений: 534
10.09.2020, 14:40  [ТС]
Что проще, a) окно сообщения закрывается само через секунды, или b) сообщение выводится в виде, не требующим закрытия.
0
7690 / 2887 / 1110
Регистрация: 06.06.2017
Сообщений: 9,815
10.09.2020, 17:31
Не понимаю b). Если не в виде окна, то либо тултип (всплывашка) либо запись в лог.
a), конечно, проще — вместо 47 строки:
Visual Basic
1
CreateObject("WScript.Shell").Popup "Скачивание завершено!", 2, " Скачивание постеров", 4160
, где 2 — число секунд.
1
948 / 403 / 323
Регистрация: 12.07.2018
Сообщений: 534
11.09.2020, 12:59  [ТС]
To, что надо!
0
948 / 403 / 323
Регистрация: 12.07.2018
Сообщений: 534
11.10.2020, 11:34  [ТС]
He создаёт папкy для ID 62622 из-за двоеточия в названии.
0
7690 / 2887 / 1110
Регистрация: 06.06.2017
Сообщений: 9,815
11.10.2020, 15:03
Лучший ответ Сообщение было отмечено Masutin как решение

Решение

Исправил:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
Option Explicit
Dim oFSO, oDict, oHTTP, oHTML, R, S, n, i, iURL, Arr, URL, Name, BName, Ext
'—————————————— Номера на концах адресов страниц с постерами ——————————————
Const Num = "120831 62622 53125 94082 107822"
'——————————————————————————————————————————————————————————————————————————
Set oFSO  = CreateObject("Scripting.FileSystemObject")
Set oDict = CreateObject("Scripting.Dictionary")
Set oHTTP = CreateObject("MSXML2.XMLHTTP.6.0")
Set oHTML = CreateObject("htmlfile")
R = Array(-230,-225,-246,698,-24,-24)
S = Split(": ? * "" / |")
oHTML.designMode = "on"
 
For Each n in Split(Num)
   oHTTP.Open "GET", "https://www.cinematerial.com/movies/0-i" & N, 0
   oHTTP.send : oHTML.Write oHTTP.ResponseText: oHTTP.abort
   For Each iURL in oHTML.links
      If InStr(iURL, "about:") = 1 Then
         iURL = "https://www.cinematerial.com" & Replace(Replace(iURL, "about:blank", ""), "about:", "")
         If InStr(iURL, "/p/") Then oDict.Add iURL, Empty
      End If
   Next
   If oDict.Count Then
      N = Split(oHTML.Title, ")")(0) & ")"
      For i = 0 To 5: N = Replace(N, S(i), ChrW(R(i))): Next
      If Not oFSO.FolderExists(N) Then oFSO.CreateFolder N
      For Each iURL in oDict.Keys
         oHTTP.Open "GET", iURL, False : oHTTP.Send
         oHTML.Write oHTTP.ResponseText: oHTTP.Abort
         For Each i In oHTML.getElementsByTagName("meta")
            If i.getAttribute("property") = "og:image" Then URL = i.content: Exit For
         Next: oHTML.Close
         URL = Left(URL, InStrRev(URL, "?") - 1)
         oHTTP.Open "GET", URL, False: oHTTP.Send
         Name = oFSO.GetFileName(URL): BName = oFSO.GetBaseName(Name)
         Ext  = oFSO.GetExtensionName(Name): i = 0
         While oFSO.FileExists(oFSO.BuildPath(N, Name))
            i = i + 1: Name = BName & "_" & i & "." & Ext
         Wend
         With CreateObject("SAPI.SpFileStream")
            .Format.Type = 1: .Open oFSO.BuildPath(N, Name), 3: .Write oHTTP.ResponseBody: .Close
         End With
         oHTTP.Abort
      Next
   Else oHTML.Close
   End If
   oDict.RemoveAll
Next
 
CreateObject("WScript.Shell").Popup "Скачивание завершено!", 2, " Скачивание постеров", 4160
Set oDict = Nothing: Set oHTTP = Nothing: Set oHTML = Nothing: Set oFSO = Nothing
1
948 / 403 / 323
Регистрация: 12.07.2018
Сообщений: 534
14.11.2021, 23:41  [ТС]
Line 16 Char 4
800C000E
msxml6.dll
Error: Проблемы c безопасностью
Месяцы назад работал. Пожалуйста, на досуге, как y Bac? XP!
0
7690 / 2887 / 1110
Регистрация: 06.06.2017
Сообщений: 9,815
16.11.2021, 02:30
Только сейчас заметил. В ЛС же можно постучаться.
В 8 строке после первой точки добавить Server. И над 12-ой вставить oHTTP.setOption(2) = 8192.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.11.2021, 02:30

Как получить текст из html тега?
Ребят, появилась надобность поработать с html или на него... &lt;td&gt;&lt;/td&gt;&lt;td class=&quot;t&quot;&gt;&lt;a href=&quot;/book/111/3543&quot;&gt;Глава 32....

Как получить содержание тега формы HTML в PHP?
Есть форма &lt;form action=&quot;&lt;?php echo htmlspecialchars($_SERVER); ?&gt;&quot; method=&quot;post&quot;&gt; &lt;div class=&quot;nazv&quot;&gt;124567&lt;/div&gt; &lt;button...

Как получить значение тега с определенным id на html странице
Пробывал загружать код страницы в мемо и дальше ищу ид тега или символы &quot;$&quot;. Работать, работает, но очень медленно и прога зависает. Надо...

Как получить доступ к атрибутам тега table HTML
Приветствую! Собственно сабж в теме. Использую WB, необходимо получить доступ к атрибутам таблицы, таким как: class и data-token ...

Как получить аттрибут html-тега из partial view в JavaScript?
Привет, дело в следующем. Есть главное view в котором в list скриптом загружается partial view _Table: &lt;script...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru