powered by simpleCommunicator - 2.0.37     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBA скрипт для извлечения информации с веб-страницы
5 сообщений из 5, страница 1 из 1
VBA скрипт для извлечения информации с веб-страницы
    #39507853
cherry21
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
У меня такая проблема: Есть файл excel c 1020 гиперссылками, мне нужно пройти по каждой из них и автоматически выгрузить в таблицу excel конкретную информацию, а именно - указанный на данной странице адрес сайта со ссылкой.

На форуме видела похожую тему: http://www.sql.ru/forum/360384/kak-vytashhit-dannye-s-web-stranicy, и на основе представленных там кодов написала собственный код, однако, так как знания VBA у меня начальные, то он, разумеется, не работает.
Помогите, пожалуйста, разобраться и понять, как сделать все правильно и так, чтобы код заработал.
Буду очень благодарна за помощь!

Код: vbnet
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.
Sub SiteSearch()

Dim i, s, o As New WinHttp.WinHttpRequest

For i = 1 To 1020

o.Open "GET", Cells(i, 1).Hyperlinks(1).address, False
' Тут я пытаюсь дать ссылку на все гиперссылки страниц, расположенные в первом столбце моего excel файла. 

    Sub companysite()
    Dim s, z, t1, t2, site
    s = "<td>Web-site Adress</td>" & vbCrLf & "<span class=""company__contacts-item-text"">website</span></td>"
' Здесь я хотела задать поиск на каждой из страниц адреса сайта со ссылкой по тегам. Правда не знаю, что писать на месте website. 
    z = InStr(1, s, "Web-site Adress")

    If z > 0 Then
        t1 = InStr(InStr(z, s, "<span"), s, ">") + 1
        t2 = InStr(t1, s, "</")
        site = Mid(s, t1, t2 - t1)
        Cells(i, 2).Value = site
    End If

    End Sub


Next i

Set o = Nothing

End Sub
...
Рейтинг: 0 / 0
VBA скрипт для извлечения информации с веб-страницы
    #39507942
iMrTidy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cherry21,

Что именно не понятно в коде?
...
Рейтинг: 0 / 0
VBA скрипт для извлечения информации с веб-страницы
    #39508172
cherry21
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iMrTidy, Дело в том, что он не работает, и так как я очень слабо знакома с VBA, не могу понять где именно у меня ошибки. Можете с этим помочь?

В частности в этих местах:
1) s = "<td>Web-site Adress</td>" & vbCrLf & "<span class=""company__contacts-item-text"">website</span></td>"
Здесь я в теге span class пытаюсь достать со страницы адрес веб сайта, но не знаю, что писать в макросе внутри самого тега. Оставлять пробел?

2) Как задать выдачу результата в ячейки листа excel?: Я пыталась это задать, вписав Cells(i, 2).Value = site
Но, очевидно, сделала что-то не так.

Помогите, пожалуйста!
...
Рейтинг: 0 / 0
VBA скрипт для извлечения информации с веб-страницы
    #39508201
iMrTidy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cherry21iMrTidy, Дело в том, что он не работает, и так как я очень слабо знакома с VBA, не могу понять где именно у меня ошибки. Можете с этим помочь?

В частности в этих местах:
1) s = "<td>Web-site Adress</td>" & vbCrLf & "<span class=""company__contacts-item-text"">website</span></td>"
Здесь я в теге span class пытаюсь достать со страницы адрес веб сайта, но не знаю, что писать в макросе внутри самого тега. Оставлять пробел?

2) Как задать выдачу результата в ячейки листа excel?: Я пыталась это задать, вписав Cells(i, 2).Value = site
Но, очевидно, сделала что-то не так.

Помогите, пожалуйста!

И Вас не смущает процедура в процедуре?

Переменным лучше задавать типы при объявлении, это поможет сэкономить не только память, но и время при отладке, не говоря о быстродействии.

Ваш WinHttpRequest объект после открытия ссылки не принимает далее никакого участия в процессе. Да и само открытие не происходит, пока не выполнена команда посылки.

Поиск адреса на сайте попахивает парсингом html. Смотря конечно, что там за сайты, может быть Ваш метод и сойдет.

Лучшее, что я могу для Вас сделать:

Код: vbnet
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.
Option Explicit

Sub SiteSearch()

Dim i As Integer
Dim s As String
Dim o As New WinHttp.WinHttpRequest

For i = 1 To 1020
    o.Open "GET", Cells(i, 1).Hyperlinks(1).Address, False
    o.Send
    o.WaitForResponse
    s = o.ResponseBody
    Cells(i, 2).Value = CompanySite(s)
Next

Set o = Nothing

End Sub

Function CompanySite(s As String) As String

Dim z As Integer
Dim t1 As Integer
Dim t2 As Integer

z = InStr(1, s, "Web-site Adress")
If z > 0 Then
    t1 = InStr(InStr(z, s, "<span"), s, ">") + 1
    t2 = InStr(t1, s, "</")
    CompanySite = Mid(s, t1, t2 - t1)
End If

End Function
...
Рейтинг: 0 / 0
VBA скрипт для извлечения информации с веб-страницы
    #39509075
cherry21
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iMrTidy, Спасибо вам большое!
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBA скрипт для извлечения информации с веб-страницы
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]