【发布时间】:2018-01-14 06:03:55
【问题描述】:
我正在尝试将网站中的价格提取到单个条形码的 Excel 中。到目前为止,我已经找到了一小段代码并试图将它们组合在一起。我唯一的成功是将条形码放入搜索框中,然后单击。然后网站显示结果,但我无法将网站中的结果输入 Excel。
Sub GetPriceFromWeb1()
Dim IE As New InternetExplorer
Dim doc As HTMLDocument
Dim htmlInput As IHTMLElement
Dim HTMLButton As IHTMLElement
IE.Visible = True
IE.Navigate " http://www.web1.com"
Do While IE.ReadyState <> READYSTATE_COMPLETE
Loop
Set doc = IE.Document
Set htmlInput = doc.getElementById("ContentPlaceHolderDefault_mainContent_tabbedMediaVal_9_txtBarcode")
htmlInput.Focus
htmlInput.Value = "045986013729"
Application.Wait Now + TimeValue("00:00:01")
Set HTMLButton = doc.getElementById("ContentPlaceHolderDefault_mainContent_tabbedMediaVal_9_getValSmall")
HTMLButton.Focus
HTMLButton.Click
'After clicking the button, the page refreshes and shows the barcode, title and price and shows a message (which disappears in a short time that item has been added)
Dim tag
Dim tags As Object
Set tags = doc.getElementsByClassName("col_Price")
For Each tag In tags
If tag.className = "col_Price" Then
MsgBox tag.innerText
Exit For
End If
Next tag
End Sub
该网站有以下 HTML 代码,用于我有兴趣提取的值:
<div class="row rowDetails_Media">
<div class="col_Delete"><span class=""><a id="ContentPlaceHolderDefault_mainContent_BasketContents_14_rptBasket_btnDelete_0" class="delete" href="javascript:__doPostBack('ctl00$ctl00$ctl00$ContentPlaceHolderDefault$mainContent$BasketContents_14$rptBasket$ctl00$btnDelete','')"></a></span></div>
<div class="col_Title">Presumed Innocent </div>
<div class="col_Items">1 </div>
<div class="col_Code">0085391203421 </div>
<div class="col_Price">0.05 </div>
<div class="clearfix"></div>
</div>
我想要的值是:
- col_Title 中的标题:Presumed Innocent 在单元格 B2 表 1 中
- col_Price 中的价格:0.05 在工作表 1 的单元格 C2 中。
非常感谢您在这方面的帮助。
【问题讨论】:
-
点击按钮后,再次尝试等待,直到就绪状态完成。
-
我也试过了,问题是关于提取标题和价格。谢谢
-
Set doc = IE.Document- 每次重新加载页面时,您都需要再次执行此操作:您正在搜索上一页(并且不再存在...) -
@Tim Williams 是的,这就是问题所在,代码搜索了上一页,即使使用 Set doc = IE.Document 后它仍然会这样做