Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用VBA实现Amazon卖家抓取_Vba_Excel - Fatal编程技术网

用VBA实现Amazon卖家抓取

用VBA实现Amazon卖家抓取,vba,excel,Vba,Excel,因此,我一直在尝试用VBA编写一些东西,以从任何亚马逊页面获取所有卖家名称和价格,下面是一个产品列表示例: 我尝试了VBA中的每个选项来返回某些标记的innertext/innerhtml,这些标记包含我想要的数据,但无论我使用什么方法,它都失败了 getElementsByClassName-错误, getElementsByName-错误, getElementById-错误 getElementsByTagName-返回类似“[object HtmlPanelElement]”的内容 卖

因此,我一直在尝试用VBA编写一些东西,以从任何亚马逊页面获取所有卖家名称和价格,下面是一个产品列表示例:

我尝试了VBA中的每个选项来返回某些标记的innertext/innerhtml,这些标记包含我想要的数据,但无论我使用什么方法,它都失败了

getElementsByClassName-错误, getElementsByName-错误, getElementById-错误 getElementsByTagName-返回类似“[object HtmlPanelElement]”的内容

卖方id包含在此标签中: p class=“a-间距-小olpSellerName” &此标签中包含的价格:

这是我的代码,我知道它需要一个for循环来遍历指定标记的所有实例,但我甚至不能让它返回innertext。我尝试过将变量改为“IHTMLElement”或“IHTMLElementCollection”,但没有任何效果

此外,我还检查了Microsoft HTML对象库和Internet控件

Option Explicit
Sub RunNewModule()

Dim ie As InternetExplorer
Dim html As HTMLDocument

Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = False
ie.Navigate "http://www.amazon.com/gp/offer-listing/B00KTOE41I/ref=dp_olp_all_mbc?ie=UTF8&condition=all"

Do While ie.ReadyState <> READYSTATE_COMPLETE
DoEvents
Loop

Set html = ie.Document
Set ie = Nothing
Dim table
Dim sellers

UserForm1.TextBox2.Text = html.DocumentElement.innerHTML
Set table = html.getElementsByTagName("a").Item

sellers = table.all
UserForm1.TextBox7.Text = sellers

Cells.Clear
Range("A3").Value = "Seller"
Range("B3").Value = "Price"
Range("A4").Value = sellers

End Sub
选项显式
子RunNewModule()
Dim ie作为InternetExplorer
将html设置为HTMLDocument
设置ie=CreateObject(“InternetExplorer.Application”)
可见=假
即“导航”http://www.amazon.com/gp/offer-listing/B00KTOE41I/ref=dp_olp_all_mbc?ie=UTF8&condition=all"
在ie.ReadyState ReadyState\u完成时执行此操作
多芬特
环
设置html=ie.Document
设置ie=无
昏暗的桌子
暗淡的卖家
UserForm1.TextBox2.Text=html.DocumentElement.innerHTML
Set table=html.getElementsByTagName(“a”).Item
卖方=表1.all
UserForm1.TextBox7.Text=卖家
牢房,没问题
范围(“A3”).Value=“卖方”
范围(“B3”)。值=“价格”
范围(“A4”)。价值=卖方
端接头
使用此URL:

您可以这样获取价格:
Set priceData=html.getElementsByClassName(“olpOfferPrice”)

然后将其输出到B列,如下所示:

cntr = 4
For Each Item In priceData
    Range("B" & cntr) = Item.innerText
    cntr = cntr + 1
Next Item

卖家也是这样:
Set sellerData=html.getElementsByClassName(“olpSellerName”)

除此之外,这将只返回卖方的名称在文本中,而不是图像


结果:



确保关闭IE(
IE.Quit
),否则将其保留在内存中。

在此处找不到任何此类标记:查看来源:没错,我更新了IE.navigate url。标签应该在那里。