需要帮助与Excel VBA刮
我需要刮标题,产品说明和产品代码,并将其保存到<<< HERE >>>的工作表中,这些情况是:
- “凯瑟琳兰斯菲尔德海伦娜多床罩 – 双”
- “这款令人惊叹的象牙床单经过特别devise,可以与海伦娜卧室系列一起使用,它采用了微妙的花卉devise,并采用菱形绗缝处理。床罩被填充,因此可以在夏季用作轻质被子,或作为额外的层聚酯纤维,尺寸L260,W240cm。适用于一张双人床,可在30°C水洗,适合滚筒烘干EAN:5055184924746。
- 产品编号116/4196“
我尝试过不同的方法,最后没有一个对我好。 对于Mid和InStr函数结果是没有,可能是我的代码是错误的。 对不起,我不给任何代码,因为我已经搞砸了很多次,没有结果。 我曾试图用GetDatafromPage刮孔页面。 它可以很好地工作,但是对于不同的产品页面,输出会随着页面之间的元素变化而变化到不同的行。 也不可能只刮选出的元素。 所以从定义的单元格获得价值是毫无意义的。
另一种select而不是使用InternetExplorer对象是xmlhttp
对象。 这里是一个类似于kekusemau的例子,而是使用xmlhttp
对象来请求页面。 我然后加载HTML文件中的xmlhttp
对象的responseText
。
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
这似乎不是太困难。 您可以使用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
的参考,我不知道是否有默认情况下,如果不是你必须先设置它来运行此代码)。