Страницы: 1
RSS
Копирование данных из сайта на лист
 
Добрый вечер всем.
Есть сайт
Скрытый текст

Хочу из него достать список всех продуктов в ексель.
Как бы список уже достал через веб запрос, но еще хотелось бы чтоб названия были с гиперссылками на страницы в интернете.
То есть так, если выделить таблицу, скопировать и вставить в ексель.
Кто может подсказать обязательно надо парсить исходный код в поиске гиперссылок или есть решения попроще?
Изменено: Dima S - 22.02.2015 20:14:17
 
Можно использовать HtmlDocument из библиотеки "Microsoft HTML Object Library", а в нём использовать методы getElementsByTagName и другие. :)
There is no knowledge that is not power
 
к сожалению не знаком с HtmlDocument (
начал читать, и понял что проще будет (для меня) таки парсить страницу :)  
 
Вот отпарсенный ответ. Вроде ничего не пропустил, гарантий давать не могу. :)
http://dropmefiles.com/8okpu
Слишком объемный файл.

UPD: Похоже я все-таки неправильно обработал в паре-тройке мест. Все из-за макроса переноса данных.
Вот это правильный файл:
http://dropmefiles.com/YBfjs
Изменено: Все_просто - 22.02.2015 22:42:50
С уважением,
Федор/Все_просто
 
Большое спасибо! )
Я уже тоже почти допарсил)
 
Цитата
Dima S написал: хотелось бы чтоб названия были с гиперссылками... к сожалению не знаком с HtmlDocument (
не знаю, подойдёт ли... но я использовала такой код для взятия ссылок... только линк свой попробуйте... ну и, наверно, вам выборочные линки нужны - там уж сами выбирайте

Код
Public Function UseHTML(Url$) As Variant
Dim XMLHTTP, XX
Set XMLHTTP = CreateObject("Microsoft.XMLHTTP")
    With XMLHTTP
        .Open "Get", Url$, "False"
        .send
       If .statustext = "OK" Or .Status = 200 Then
            XX = Split(.responsetext, "</head>")  'по совету от Doober: отрезать head - там самая муть - чтобы ускорить загрузку
            If UBound(XX) = 0 Then Exit Function
            Code_Page = "<html>" & XX(1)
            'Debug.Print .responsetext
        Else: MsgBox .statustext & "  " & .Status
        End If
    End With
    
    UseHTML = Code_Page
    Set XMLHTTP = Nothing
End Function

Sub UseHTML_LinksGet()
Dim XMLHTTP As Variant, Url$, PZ As Integer, Arr As Variant
Dim S As String, T
Url$ = "http://www.cmegroup.com/trading/fx/g10/british-pound_quotes_settlements_options.html"  'линк запроса
Sheets("Лист1").UsedRange.Clear
S = UseHTML(Url$)
Set HTML = CreateObject("htmlfile")
HTML.Write S        

'http://www.excelworld.ru/forum/10-12885-3
'alex77755 Суббота, 22.11.2014, 14:18 | Сообщение № 57
'Список ссылок

 For Each TB In HTML.Links
            j = j + 1
            If Len(TB.innertext) > 0 Then
                ActiveSheet.Hyperlinks.Add Anchor:=Cells(j, 1), Address:= _
                Url$ & Replace(TB.href, "about:", ""), _
                TextToDisplay:=TB.innertext
                Cells(j, 2) = Url$ & Replace(TB.href, "about:", "")
            End If
Next
End Sub
P.S. а в сообщении№58 (по линку закоментированному в коде) - пример использования Select Case (может подойдёт?)
Изменено: JeyCi - 14.03.2015 13:08:44
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
Цитата
Dima S написал: к сожалению не знаком с HtmlDocument (
Самое время познакомиться. :D
There is no knowledge that is not power
 
Что такое DOM - мне кажется начинать можно отсюда (если я не путаю понятия :oops: - уж больно много слов)
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
Страницы: 1
Наверх