[英]need help scraping with excel vba
我需要抓取标题,产品说明和产品代码,并将其从<<< HERE >>>保存到工作表中,在这种情况下,这些是:
我尝试了不同的方法,但最后没有一个方法对我有好处。 对于Mid和InStr函数,结果为空,可能是我的代码错误。 抱歉,我没有提供任何代码,因为我已经把它弄乱了很多次,也没有结果。 我试图用GetDatafromPage抓取孔页。 它运作良好,但是对于不同的产品页面,随着元素数量在页面之间的变化,输出将转到不同的行。 而且,不可能只刮取选定的元素。 因此,从定义的单元中获取价值是没有意义的。
替代使用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
的引用,我不知道默认情况下是否存在该引用,如果没有,则必须先设置它才能运行此代码)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.