我正在尝试在amazon.com上搜索产品并提取该项目的asin。 asin隐藏在data-asin标签下的li中。我的excel宏目前运行所有搜索标签选项,并检查亚马逊1比1并收集产品价格。但是我需要这个函数来收集每个项目的asin
以下代码:
Sub SearchGoogle()
Dim ie As Object
Dim form As Variant
Dim button As Variant
Dim LR As Integer
Dim var As String
Dim var1 As Object
Dim var2 As Object
LR = Cells(Rows.Count, 1).End(xlUp).Row
For x = 2 To LR
var = Cells(x, 1).Value
Set ie = CreateObject("internetexplorer.application")
ie.Visible = True
With ie
.Visible = True
.navigate "https://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords=" & Range("azAsin")
While Not .readyState = READYSTATE_COMPLETE
Wend
End With
'Wait some to time for loading the page
While ie.Busy
DoEvents
Wend
Application.Wait (Now + TimeValue("0:00:02"))
While ie.Busy
DoEvents
Wend
Application.Wait (Now + TimeValue("0:00:02"))
'Set var1 = ie.document.getElementsByClassName("sx-price-whole")
'Cells(x, 2).Value = var1(0).textContent
Set var2 = ie.document.getElementById("result_0").getelementsbytagname("data-asin")
MsgBox var2(0).textContent
'Cells(x, 3).Value = var2().innerText
ie.Quit
Set ie = Nothing
Next x
End Sub
当我搜索特定项目时,来自amazon.com的HTML代码:
<li id="result_0" data-result-rank="0" data-asin="B006RN77MI" data-action="sx-detail-display-trigger" class="s-result-item s-result-card-for-container a-declarative celwidget "><div class="s-item-container" style="height: 367px;"><div class="a-row a-spacing-top-micro a-spacing-micro"><div class="a-row sx-badge-region"><div class="a-row a-spacing-large"></div></div></div><div class="a-row a-spacing-base"><div aria-hidden="true" class="a-column a-span12 a-text-center s-position-relative"><a class="a-link-normal a-text-normal" href="https://www.amazon.com/Ameda-Platinum-Breast-Grounded-Power/dp/B006RN77MI/ref=sr_1_1_a_it?ie=UTF8&qid=1515781416&sr=8-1&keywords=B006RN77MI"><img src="https://images-na.ssl-images-amazon.com/images/I/41NrM6wVJTL._AC_US200_.jpg" srcset="https://images-na.ssl-images-amazon.com/images/I/41NrM6wVJTL._AC_US200_.jpg 1x, https://images-na.ssl-images-amazon.com/images/I/41NrM6wVJTL._AC_US300_FMwebp_QL65_.jpg 1.5x, https://images-na.ssl-images-amazon.com/images/I/41NrM6wVJTL._AC_US400_FMwebp_QL65_.jpg 2x, https://images-na.ssl-images-amazon.com/images/I/41NrM6wVJTL._AC_US500_FMwebp_QL65_.jpg 2.5000x" width="200" height="200" alt="Product Details" class="s-access-image cfMarker" data-search-image-load=""></a><div class="a-section a-spacing-none a-text-center"></div></div></div><div class="a-row a-spacing-none"><div class="a-row a-spacing-mini"><a class="a-link-normal s-access-detail-page s-color-twister-title-link a-text-normal" title="Ameda Platinum Breast Pump with Grounded Power Cord" href="https://www.amazon.com/Ameda-Platinum-Breast-Grounded-Power/dp/B006RN77MI/ref=sr_1_1_a_it?ie=UTF8&qid=1515781416&sr=8-1&keywords=B006RN77MI"><h2 data-attribute="Ameda Platinum Breast Pump with Grounded Power Cord" data-max-rows="0" class="a-size-base s-inline s-access-title a-text-normal">Ameda Platinum Breast Pump with Grounded Power Cord</h2></a></div><div class="a-row a-spacing-none"><a class="a-link-normal a-text-normal" href="https://www.amazon.com/Ameda-Platinum-Breast-Grounded-Power/dp/B006RN77MI/ref=sr_1_1?ie=UTF8&qid=1515781416&sr=8-1&keywords=B006RN77MI"><span class="a-offscreen">$1,995.00</span><span aria-hidden="true" class="a-color-base sx-zero-spacing"><span class="sx-price sx-price-large">
<sup class="sx-price-currency">$</sup>
<span class="sx-price-whole">1,995</span>
<sup class="sx-price-fractional">00</sup>
</span>
</span></a></div><div class="a-row a-spacing-none"><span class="a-size-small a-color-price">Only 1 left in stock - order soon.</span></div><div class="a-row a-spacing-top-mini a-spacing-none"><span name="B006RN77MI">
答案 0 :(得分:2)
在您的情况下,asin不是标记名称,而是属性。要返回该值,您可以使用以下代码:
strAsin = ie.document.getElementById("result_0").getAttrubute("data-asin")
注意:这将返回一个字符串,而不是一个对象。
为防止出现难看的错误,首先进行测试以确认“data-asin”属性是否存在可能是有意义的。诸如以下的代码实现了:
If ie.document.getElementById("result_0").hasAttrubute("data-asin") then
strAsin = ie.Document.getElementById("result_0").getAttribute("data-asin")
Else
'Do something if attribute doesn't exist
End if