Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBA скрипт для извлечения информации с веб-страницы / 5 сообщений из 5, страница 1 из 1
19.08.2017, 15:24
    #39507853
cherry21
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA скрипт для извлечения информации с веб-страницы
Здравствуйте!
У меня такая проблема: Есть файл 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
20.08.2017, 01:44
    #39507942
iMrTidy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA скрипт для извлечения информации с веб-страницы
cherry21,

Что именно не понятно в коде?
...
Рейтинг: 0 / 0
20.08.2017, 22:08
    #39508172
cherry21
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA скрипт для извлечения информации с веб-страницы
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
21.08.2017, 01:02
    #39508201
iMrTidy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA скрипт для извлечения информации с веб-страницы
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
23.08.2017, 00:02
    #39509075
cherry21
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA скрипт для извлечения информации с веб-страницы
iMrTidy, Спасибо вам большое!
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBA скрипт для извлечения информации с веб-страницы / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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