#vba #excel
#vba #excel
Вопрос:
Я пытаюсь извлечь данные из http://www.dsebd.org/displayCompany.php?name=LINDEBD с помощью кода VBA в excell.
пытаюсь получить следующие данные по этим ссылкам
Общее количество непогашенных ценных бумаг, название компании сектора
пытаюсь с,
Sub GetData()
Set IE = CreateObject("InternetExplorer.Application")
my_url = "http://www.dsebd.org/displayCompany.php?name=LINDEBD"
With IE
.Visible = True
.navigate my_url
.Top = 50
.Left = 530
.Height = 400
.Width = 400
Do Until Not IE.Busy And IE.readyState = 4
DoEvents
Loop
End With
Application.Wait (Now() TimeValue("00:00:016")) ' For internal page refresh or loading
Set Results = IE.document.getElementsByTagName("table")
For Each itm In Results
If itm.classname = "lgn" Then
dd = itm.getAttribute("href")
Exit For
End If
Next
' if you wnat to click the link
itm.Click
' otherwise
'Range("a1").Value = dd
MsgBox dd
End Sub
Возможно ли собирать данные с этого сайта
Комментарии:
1. Что пошло не так с вашим кодом, который там есть?
2. ошибка времени выполнения 404, требуется obejct. Я думаю, что здесь что-то не так, если itm.classname = «lgn», то dd = itm.getAttribute(«href»)
3. Закомментирование
itm.Click
останавливает ошибку, ноdd
находитсяNULL
в конце, поскольку код не может найти ни одногоclassname
изlgn
Ответ №1:
Сначала вам нужно выполнить итерацию таблицы (table), затем вы выполняете итерацию строк (tr), затем внутри нее вы выполняете итерацию ячеек (td). Это не ссылки на этой странице.
Примечание: Следующее даст вам искомое значение, но этот код будет постоянно меняться при изменении веб-сайта.
Sub GetData()
Set IE = CreateObject("InternetExplorer.Application")
my_url = "http://www.dsebd.org/displayCompany.php?name=LINDEBD"
With IE
.Visible = True
.navigate my_url
.Top = 50
.Left = 530
.Height = 400
.Width = 400
Do Until Not IE.Busy And IE.readyState = 4
DoEvents
Loop
End With
Application.Wait (Now() TimeValue("00:00:016")) ' For internal page refresh or loading
Set Results = IE.document.getElementsByTagName("table")
For Each itm In Results
Set rowAlt = IE.document.getElementsByClassName("alt")
For Each itmTR In rowAlt
Set tdValues = itmTR.getElementsByTagName("td")
If tdValues.Item(0).innerText = "Total No. of Outstanding Securities" Then
MsgBox tdValues.Item(1).innerText 'the value you seek
Exit Sub 'don't continue this loop
End If
Next
Next
End Sub