我需要抓取标题,产品说明和产品代码,然后将其保存到工作表中,并与<<< HERE>>>在这种情况下,那些是:
我尝试了不同的方法,最终没有一个对我有好处。对于Mid和InStr函数,结果是none,可能是我的代码错了。对不起,我不提供任何代码,因为我已经搞砸了很多次并没有结果。我试图用GetDatafromPage刮取孔页。它运行良好,但对于不同的产品页面,输出会转到不同的行,因为元素的大小会在页面之间发生变化。也不可能只刮掉所选择的元素。因此从定义的单元格中获取价值毫无意义。
答案 0 :(得分:4)
另一个选项是xmlhttp
对象,而不是使用InternetExplorer对象。这是与kekusemau类似的示例,而是使用xmlhttp
对象来请求页面。然后我从html文件中的responseText
对象加载xmlhttp
。
Sub test()
Dim xml As Object
Set xml = CreateObject("MSXML2.XMLHTTP")
xml.Open "Get", "http://www.argos.co.uk/static/Product/partNumber/1164196.htm", False
xml.send
Dim doc As Object
Set doc = CreateObject("htmlfile")
doc.body.innerhtml = xml.responsetext
Dim name
Set name = doc.getElementById("pdpProduct").getElementsByTagName("h1")(0)
MsgBox name.innerText
Dim desc
Set desc = doc.getElementById("genericESpot_pdp_proddesc2colleft").getElementsByTagName("div")(0)
MsgBox desc.innerText
Dim id
Set id = doc.getElementById("pdpProduct").getElementsByTagName("span")(0).getElementsByTagName("span")(2)
MsgBox id.innerText
End Sub
答案 1 :(得分:3)
这似乎并不太难。您可以使用Firefox查看页面结构(右键单击某处并单击inspect element
,然后继续...)
以下是一个简单的示例代码:
Sub test()
Dim ie As InternetExplorer
Dim x
Set ie = New InternetExplorer
ie.Visible = True
ie.Navigate "http://www.argos.co.uk/static/Product/partNumber/1164196.htm"
While ie.ReadyState <> READYSTATE_COMPLETE
DoEvents
Wend
Set x = ie.Document.getElementById("pdpProduct").getElementsByTagName("h1")(0)
MsgBox Trim(x.innerText)
Set x = ie.Document.getElementById("genericESpot_pdp_proddesc2colleft").getElementsByTagName("div")(0)
MsgBox x.innerText
Set x = ie.Document.getElementById("pdpProduct").getElementsByTagName("span")(0).getElementsByTagName("span")(2)
MsgBox x.innerText
ie.Quit
End Sub
(我在Excel中引用Microsoft Internet Controls
,我不知道默认情况下是否存在,如果不是,则必须先将其设置为运行此代码。)