Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.88/26: Рейтинг темы: голосов - 26, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 22.09.2021
Сообщений: 28
Excel

Парсинг определенной информации со ссылки в ячейке

10.10.2021, 19:40. Показов 5577. Ответов 36

Студворк — интернет-сервис помощи студентам
Добрый день, вечер, утро!
Подскажите, пожалуйста, как парсить информацию с ссылки, ссылка находится в ячейке эксель, я по ней перехожу, и хочу в соседнюю ячейку вставить информацию с определенного блока ( в моем случае мне нужны обязанности вакансии с работа ру или хх).
Мой код ниже, он переходит по ссылке , но дальше ничего не происходит, и как быть непонятно, посмотрите, пожалуйста, что не так? может быть кто-то встречался с подобной проблемой?
Файл прикрепил архивом, в нем эксель.

Visual Basic
1
2
3
4
5
6
7
8
9
10
Sub A10()
Dim обязанности As String
Dim сайт As Object
ILastRow = Cells(Rows.Count, 4).End(xlUp).Row
Set сайт = CreateObject(«InternetExplorer.Application»)
сайт.Visible = True
сайт.Navigate Range("D3:D" & ILastRow)
обязанности = сайт.document.queryselector("обязаннос" Or "задачи" Or "требования").innertext
Range("E3:E" & ILastRow).Value = обязанности
End Sub
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.10.2021, 19:40
Ответы с готовыми решениями:

Как написать на скрипт java поиска ссылки на определенной html странице если известно начало ссылки но не известен конец.
Как написать на java скрипт поиска ссылки на определенной html странице если известно начало ссылки которую ищем, но не известен ее конец.

Обратится к определённой ячейке области
Добрый день! Такой вопрос - формирую макет программно. И у меня есть области, которые дублируются. Как к ним можно потом обратится?...

Фокус на определенной ячейке в DataGridView
Всем привет. Подскажите пожалуста, можно ли вернуть курсор на определенную ячейку, например на (0,0) и если да, то как? Нашел в сети...

36
jump
 Аватар для I can
5005 / 4769 / 852
Регистрация: 13.04.2015
Сообщений: 10,021
12.10.2021, 14:13
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Alimov97 Посмотреть сообщение
как избежать этого сообщения?
Известно как - выключить сообщения.

Application.DisplayAlerts=false

Добавлено через 1 минуту
И с протоколом безопасности можно поиграть.

Добавлено через 8 минут
Цитата Сообщение от Alimov97 Посмотреть сообщение
Как быть если вакансия в архиве?
Можно вытащить. Информация об обязанностях остаётся на странице.
0
0 / 0 / 0
Регистрация: 22.09.2021
Сообщений: 28
14.10.2021, 15:04  [ТС]
I can ,

Здравствуйте! Не видел Вашего ответа на другой странице, грустил, не знал как быть…
За это время пробовал DisplayAlerts=False
Display Alerts- не помогает, все равно выскакивает

Вытащить информацию типо так?
If Arr.innertext = Array(“Вакансия в архиве”) Then
Arr.Click
Так?
А потом опять ищем теги обязанности, задачи и тд
0
jump
 Аватар для I can
5005 / 4769 / 852
Регистрация: 13.04.2015
Сообщений: 10,021
14.10.2021, 15:55
Цитата Сообщение от Alimov97 Посмотреть сообщение
Так?
Нет, не так. Всё немного сложнее.

Добавлено через 32 минуты
Сейчас на работе, недосуг. Вечером посмотрю.
1
0 / 0 / 0
Регистрация: 22.09.2021
Сообщений: 28
14.10.2021, 16:02  [ТС]
I can ,

Спасибо! Буду ждать!
0
jump
 Аватар для I can
5005 / 4769 / 852
Регистрация: 13.04.2015
Сообщений: 10,021
15.10.2021, 07:26
Лучший ответ Сообщение было отмечено Alimov97 как решение

Решение

Alimov97, вот
Вложения
Тип файла: rar Лист Microsoft Excel.rar (17.3 Кб, 14 просмотров)
1
0 / 0 / 0
Регистрация: 22.09.2021
Сообщений: 28
15.10.2021, 13:42  [ТС]
I can ,

все круто!!! Спасибо!!!

Но система безопасности меня доканала!)))
Когда в ваш макрос в экселе вставляю др. ссылки, выскакивает эта фигня…
0
jump
 Аватар для I can
5005 / 4769 / 852
Регистрация: 13.04.2015
Сообщений: 10,021
15.10.2021, 13:46
Цитата Сообщение от Alimov97 Посмотреть сообщение
выскакивает эта фигня…
Попробуйте покапаться в настройках офиса, там наверняка можно это отключить.
0
0 / 0 / 0
Регистрация: 22.09.2021
Сообщений: 28
15.10.2021, 14:15  [ТС]
I can ,

.Open “GET”, Trim$(r),False
Почему False? Что это значит?
Получаем данные с сайта, записываем в r без пробелов в начале и конце, почему не тру?

Добавлено через 48 секунд
можно вам скинуть ваш код с моими комментами, чтобы я смог понять логику?
0
jump
 Аватар для I can
5005 / 4769 / 852
Регистрация: 13.04.2015
Сообщений: 10,021
15.10.2021, 14:56
Цитата Сообщение от Alimov97 Посмотреть сообщение
Почему False? Что это значит?
Тип режима (type) – может принимать два значения true - код будет выполняться, не ожидая ответа от сервера или false – сценарий остановит работу до возврата сервером ответа на запрос
0
0 / 0 / 0
Регистрация: 22.09.2021
Сообщений: 28
15.10.2021, 16:46  [ТС]
I can ,

Посмотрите, пожалуйста, я правильно понимаю код в комментариях? Я там немного диапазон исправил для своей задачи , у меня все работает кроме блокировки системы безопасности!)
Вложения
Тип файла: docx Dokument_Microsoft_Word.docx (14.0 Кб, 0 просмотров)
0
0 / 0 / 0
Регистрация: 22.09.2021
Сообщений: 28
15.10.2021, 16:50  [ТС]
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
Option Explicit
 
Option Compare Text
 
Sub A97()
 
Dim s As String, st As String, r As Range, ILastRow As Integer, Arr, i As Integer, k As Long
 
ILastRow = Sheets("Анализ").Cells(Rows.Count, 8).End(xlUp).Row 'Обязанности:
 
Dim oXMLHTTP: Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP") 'Теги
 
Application.DisplayAlerts = False ' Отключить вывод сообщений и оповещений во время выполнения макроса,которое у меня почему-то нихрена не работает
 
Application.ErrorCheckingOptions.BackgroundChecking = False
 
ThisWorkbook.RemovePersonalInformation = False
 
Application.EnableEvents = False
 
ThisWorkbook.EnableConnections 'Подавление сист безопасности, которое тоже нихрена не работает
 
Arr = Array("Вакансия в архиве", "обязанности:", "задачи:", "делать:", "вы будете:", "обязанностей сотрудника:")
 
For Each r In Sheets("Анализ").Range("H2:H" & ILastRow) 'ссылки
 
oXMLHTTP.Open "GET", Trim$(r), False ' Trim$(r) без пробелов в конце и начале в строке, ФОЛС для быстроты, остановит работу до возврата сервером ответа на вопрос
 
oXMLHTTP.send 'Выполняется чтение
 
On Error Resume Next 'Если возникла ошибка
 
st = DeleteTags(oXMLHTTP.responseText) 'удаляем теги и возвращаем текст ответа от сервера на отправленный запрос
 
s = "": k = 0 'Если будет ошибка, то в ячейке будет пусто
 
For i = 0 To UBound(Arr) 'возвращает значение типа Arr (у нас 6 тегов) i от 0 до 5
 
If InStr(1, st, Arr(i)) > 0 Then 'Если в 1 строке и строке st есть совпадение по Arr(i)
 
If i = 0 Then ' Срабтает ток если на сайте есть Вакансия в архиве
 
s = Arr(0) & ". " 'Типо вакансия в архиве + продолжение, а если мнененадо в ячейке вакансияв архиве, то s = & ". "
 
Else 'Если в строке нет совпадений Arr(i)
 
k = InStr(1, Split(st, Arr(i))(1), "{") - 1 ' к равно сравнение 1 строчки и чего(массива?)?, "{" - это что такое???
 
s = s & Trim$(Mid(Split(st, Arr(i))(1), 1, IIf(k > 50 And k < 500, k, 300))) 's равно s(в которой пока ничего не записано) и удалем пробелы в начале и в конце,возвращаем кол-во знаков встроке и формируемграничение текста обязанностей, от 50 до 300
 
Sheets("Анализ").Cells(r.Row, r.Column - 1) = s 'записываем в ячейку готовый ответ
 
Exit For
 
End If
 
End If
 
Next i
 
'If s = "" Then MsgBox Trim$(r)
 
Next
 
Set oXMLHTTP = Nothing
 
Application.DisplayAlerts = True
 
Application.EnableEvents = True
 
Application.ErrorCheckingOptions.BackgroundChecking = True 'возвращаем оповещения на место
 
'MsgBox "OK"
 
End Sub
 
Private Function DeleteTags(st As String) As String 'Убираем теги
 
Dim s As String
 
With CreateObject("vbscript.regexp") 'работаем с текстом и тегами
 
.Pattern = "\<.*?\>" 'шаблон заполнения тегов
 
.Global = True 'хз
 
s = .Replace(st, "") 's равно меняем ст на ""
 
st = s ' ст=""
 
.Pattern = "\\.*?\E"
 
s = .Replace(st, "")
 
End With
 
s = Replace(s, vbCrLf, " ")
 
s = Replace(s, vbCr, " ")
 
s = Replace(s, vbLf, " ")
 
s = Replace(s, vbNewLine, " ")
 
s = Replace(s, Chr(8), " ")
 
s = Replace(s, "&nbsp;", " ")
 
s = Replace(s, "&mdash;", "")
 
Do While InStr(1, s, " ") > 0
 
s = Replace(s, " ", " ")
 
Loop
 
DeleteTags = s 'короче сейчас в буфере остались теги, но их нужно удалять, и мы удаляем их из буфера, то есть с эксель ячейками мы сейчас не работаем
 
End Function
0
jump
 Аватар для I can
5005 / 4769 / 852
Регистрация: 13.04.2015
Сообщений: 10,021
15.10.2021, 21:02
Это ппц, товарищи 90% мимо.
0
0 / 0 / 0
Регистрация: 22.09.2021
Сообщений: 28
16.10.2021, 11:28  [ТС]
I can ,

Так поэтому и прошу разъяснить, потому что не понимаю (
0
jump
 Аватар для I can
5005 / 4769 / 852
Регистрация: 13.04.2015
Сообщений: 10,021
16.10.2021, 12:16
Цитата Сообщение от Alimov97 Посмотреть сообщение
Так поэтому и прошу разъяснить
Извините меня пожалуйста, но я наверное не сумею вам всё разъяснить
0
0 / 0 / 0
Регистрация: 22.09.2021
Сообщений: 28
18.10.2021, 10:03  [ТС]
I can ,

В любом случае спасибо! Попробую покопаться ещё! Может быть сумею найти код полегче!)
0
jump
 Аватар для I can
5005 / 4769 / 852
Регистрация: 13.04.2015
Сообщений: 10,021
18.10.2021, 11:22
Цитата Сообщение от Alimov97 Посмотреть сообщение
Может быть сумею найти код полегче!
А этот разве сложный? Ладно, удачи в поисках !
0
0 / 0 / 0
Регистрация: 22.09.2021
Сообщений: 28
18.10.2021, 15:21  [ТС]
I can ,

ну может быть не сложный для других, для меня, как можно понять по комментариям в коде, сложноват! ))))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.10.2021, 15:21

Передача фокуса определенной ячейке
Какой код написать в кнопке чтобы перемещаться в определенную ячейку определенного листа? Вот так не работает: Private Sub...

Можно ли передать фокус определённой ячейке?
Доброго времени суток. У меня три вопроса связанные с DataGridView: 1. Можно ли передать фокус определённой ячейке? 2. Можно ли...

Поиск определенной части текста в ячейке
Добрый день, уже сломал голову в попытке решить проблему есть 4 прайса поставщиков, у них меняются цены и наличие (нужно обновить) ...

Подсчет количества кликов в определенной ячейке
Здравствуйте! Текущая ситуация: есть табличка Excel с 7 блоками. Возле каждого блока есть две цветных ячейки: красная и зелёная. Справа...

DataGridView - в определенной ячейке сделать ComboBox
Решение: DataGridViewComboBoxCell cb = new DataGridViewComboBoxCell(); cb.Items.Add(&quot;1&quot;); cb.Items.Add(&quot;2&quot;); dataGridView2 =...


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

Или воспользуйтесь поиском по форуму:
37
Ответ Создать тему
Новые блоги и статьи
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru