- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试从 xmlhttp 中抓取元素。我对 vba 还算不错,但对数据抓取还比较陌生。我以前一直在用ie。
我可以将 html 导入到单元格中,但我想具体导入名称、ID、价格和库存水平。
我用来导入数据的代码是
Private Sub HTML_VBA_Excel()
Dim oXMLHTTP As Object
Dim sPageHTML As String
Dim sURL As String
'Change the URL before executing the code
sURL = "https://www.superdrug.com/Make-Up/Lips/Lip-Kits/Flower-Beauty-Mix-N%27-Matte-Lipstick-Duo-Tickled-Pink-687/p/769466"
'Extract data from website to Excel using VBA
Set oXMLHTTP = CreateObject("MSXML2.ServerXMLHTTP")
oXMLHTTP.Open "GET", sURL, False
oXMLHTTP.send
sPageHTML = oXMLHTTP.responseText
'Get webpage data into Excel
sh02.Cells(1, 1) = sPageHTML
End Sub
提前感谢您提供的任何帮助。
伊恩
最佳答案
您无法从针对您显示的 url 发出的 xmlhttp 请求中可靠地提取信息,因为内容是 javascript 加载的并且不会运行。
不确定 token 的可持续性如何(使用的值似乎无关紧要)但是您可以加入 productid,它是您的 url 的末尾,页面中存在 ajax token 并使用 issue 和 xmlhttp 请求querystring 参数并解析感兴趣项目的 json 响应。我用 jsonconverter.bas .下载并安装 .bas 后,您需要转到 VBE > Tools > References
并添加对 Microsoft Scripting Runtime
的引用。
一些测试似乎表明可以在连字符后添加任何数字来代替 token ,这样您就可以即时随机生成一个数字以供使用。
值得注意的是,您可以在查询字符串中用逗号分隔多个产品,从而进行批量请求。然后,您需要对返回的字典集合执行 For Each
循环。
Option Explicit
Public Sub GetInfo()
Const URL As String = "https://www.superdrug.com/micrositeProduct/bulk/769466-1548702898380"
Dim json As Object, title As String, price As String, stocking As String, id As String
With CreateObject("MSXML2.XMLHTTP")
.Open "GET", URL, False
.Send
Set json = jsonconverter.ParseJson(.responsetext)(1)
End With
title = json("name")
price = json("price")("formattedValue") 'json("price")("value")
stocking = json("stockLevel")
id = json("code")
End Sub
如果您使用浏览器,则 json 字符串作为 .innerHTML
出现在一个脚本标记中,您可以轻松地从那里提取。
关于html - 从 xmlhttp 抓取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54408528/
来自this example的新手ajax问题: 在 xmlhttp.open() 和 xmlhttp.send() 之前如何分配 xmlhttp.responseText ? (如果我们需要demo
有两个progid。我见过两个都用过。 任何人都知道我什么时候应该使用一个,什么时候应该使用另一个? 最佳答案 你绝对不应该使用 Microsoft.XmlHttp。 来自 Microsoft XML
实际上我正在开发一个聊天框......但它不符合这个条件。 这是代码 function submitChat() { if (form1.users.value == "" || form1.me
网络服务器正在返回状态代码和描述以响应 XmlHttp 的请求。成分。来自服务器的实际状态响应开头为: HTTP/1.1 400 Not a valid http POST request 我可以在
我的问题是更多的搜索基础,但是如果我更改 readState 值意味着 4 以外的值会发生什么,如果我更改状态值 200 会发生什么以及为什么这里使用常量值或神奇数字 最佳答案 这不是神奇的数字。 您
我已阅读 the MSDN blog post关于它。 和 this question对我也没有太大帮助。 据我所知,检查 Microsoft.XmlHttp 就足够了。 你能确认一下吗 thisbu
我在我的页面上尝试使用 ajax。但它不起作用,因为 if (xmlhttp.readyState==4 && xmlhttp.status==200) 始终为 false。我已经提醒了 xmlhtt
我正在通过ajax发送电子邮件来联系php。 Php 脚本成功发送电子邮件,但 ajax xmlhttp.readyState 始终返回 2,即使 xmlhttp.status 为 200。 para
我希望这两个对象调用都指向 ActiveXObject。 但是为什么我们要传递两个不同的参数才能在 IE 中工作。 1. Msxml2.XMLHTTP 和 2. 微软.XMLHTTP 他们都一样吗?或
代码如下: url="http://www.csdn.net/" wstr=getHTTPPage(url) start=Newst
我正在编写一组 VBA 宏,其中使用 XMLHTTP 对象向服务器发送异步请求。我发送基本身份验证: XMLHttpReq.setRequestHeader "Authorization","Basi
我正在尝试使用 xmlhttp 和 VBA 抓取网站。 Url 有一个井号 (#) 符号,被 VBA 误解了...... 这与此处解释的问题相同: Error in XMLHTTP Get reque
我当前使用的 xmlhttp 函数正在将一个非常小的 int 传递到 php 文件,以便使用 GET 方法进行处理。 xmlhttp=GetXmlHttpObject(); if (x
我需要严格遵守我的xml文档中元素的顺序。如果我使用 XmlHttpContent 序列化程序来形成 xml 内容,字段将按字母顺序排序。 有没有办法明确指定 xml 中元素的顺序?或者还有其他方法可
我正在尝试使用 javascript 并阅读 from http://search.yahooapis.com/ WebSearchService /V1/webSearch?appid=YahooD
url太长就会提示没有权限,ie8不会,这应该跟浏览器有关的 其实有个问题你注意一下就是,改成POST 方式传就解决了 this.xmlHttp.open("POST", thi
我的 AJAX 不工作,我不知道为什么。我错过了什么?? ReferenceError: xmlhttp 未定义@ javascript.js:5 function insapts(pin){
我有一个从这个 url 获取表格的代码 https://www.reuters.com/companies/AAPL.OQ/financials/income-statement-annual 代码没
我正在尝试让 Excel 从搜索引擎中检索数据 (torrentz.eu/search?q=abc) 它应该获取第一个链接的信息并将其显示在 Excel 上: 单元格 A1:我的查询 单元格 A2:链
我正在尝试使用此代码抓取网站以提取姓名和联系人... Sub Test() Dim htmlDoc As Object Dim htmlDoc2 As Object Di
我是一名优秀的程序员,十分优秀!