Я хочу получить данные с веб-страницы, но, наконец, я не могу записать данные в лист.Данные в табличной форме (несколько строк, столбец)? - PullRequest
2 голосов
/ 14 апреля 2019

невозможно получить данные с веб-страницы, а также проблема с записью данных в лист.

Sub pulldata ()

* 1004 декларация * '
Dim IE As Object
Dim doc As HTMLDocument

'Запустить приложение

Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True

навигация

IE.navigate "https://nseindia.com/live_market/dynaContent/live_watch/option_chain/optionKeys.jsp?segmentLink=17&instrument=OPTIDX&symbol=NIFTY&date=25APR2019"

цикл до загрузки страницы

Do While IE.Busy Or IE.readyState <> 4
Application.Wait DateAdd("s", 1, Now)
Loop

'поместите данные на веб-страницу и нажмите «Отправить»

Set doc = IE.document

doc.getElementById("underlyStock").Value = ThisWorkbook.Sheets("URLList").Range("A2").Value
doc.parentWindow.execScript "goBtnClick('stock');", "javascript"

'цикл до загрузки страницы

Do While IE.Busy Or IE.readyState <> 4
Application.Wait DateAdd("s", 1, Now)
Loop

вытащить данные из elementid - «октабельный» в лист - «nse»

strVal = doc.getElementById("octable").innerText
ThisWorkbook.Sheets("nse").Range("A1").Offset(r, 0).Value = strVal
r = r + 1

End Sub

Я хочу данные таблицы в nse sheet (имя листа).

Ответы [ 2 ]

0 голосов
/ 14 апреля 2019

У меня та же проблема, что и у @AhmedAU, о внутренних ошибках сервера.

Если это решит проблему, подумайте об использовании встроенных данных из веб-инструментов. Инструменты> Данные> Из Интернета> добавьте URL в адресную строку, содержащую ваш символ, например

https://nseindia.com/live_market/dynaContent/live_watch/option_chain/optionKeys.jsp?segmentLink=17&instrument=OPTIDX&symbol=ACC&date=25APR2019

Нажмите GO. Оставьте на мгновение, затем выберите нужную таблицу и импортируйте. Таблица будет импортирована в Excel.

В более ранних версиях Excel вам может потребоваться загрузить бесплатную надстройку PowerQuery от Microsoft и использовать вкладку PowerQuery для выполнения тех же задач.

0 голосов
/ 14 апреля 2019

Может попробовать что-то вроде этого, я только успешно пробовал с Nifty Data Only, поскольку я не знаю базовых символов, кроме SBIN для SBI, и он также дает страницу «Внутренняя ошибка сервера - Чтение» даже при ручном серфинге (может быть из-за этого воскресенье).

Может попробовать с вашими основными символами (может быть в подходящее время)

Код:

Sub pulldata()
'declaration
Dim IE As Object
Dim doc As HTMLDocument
'start application
Dim Tbl As HTMLTable, Cel As HTMLTableCell, Rw As HTMLTableRow, Col As HTMLTableCol
Dim TrgRw As Long, TrgCol As Long



Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
'navigation

IE.navigate "https://nseindia.com/live_market/dynaContent/live_watch/option_chain/optionKeys.jsp?segmentLink=17&instrument=OPTIDX&symbol=NIFTY&date=25APR2019"
'loop until load page

Do While IE.Busy Or IE.readyState <> 4
Application.Wait DateAdd("s", 1, Now)
Loop
'put data in webpage and click on submit

Set doc = IE.document

'doc.getElementById("underlyStock").Value = ThisWorkbook.Sheets("URLList").Range("A2").Value
'doc.parentWindow.execScript "goBtnClick('stock');", "javascript"
'loop until load page

Do While IE.Busy Or IE.readyState <> 4
Application.Wait DateAdd("s", 1, Now)
Loop
'pull data from elementid- "octable" to sheet- "nse"

Set Tbl = doc.getElementById("octable")


TrgRw = 1
    For Each Rw In Tbl.Rows
    TrgCol = 1
        For Each Cel In Rw.Cells
        ThisWorkbook.Sheets("nse").Cells(TrgRw, TrgCol).Value = Cel.innerText
        TrgCol = TrgCol + Cel.colSpan   ' if Column span is > 1 multiple
        Next Cel
    TrgRw = TrgRw + 1
    Next Rw
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...