【发布时间】:2020-03-19 22:50:33
【问题描述】:
我有以下代码:
- 打开一个网页(这里是亚马逊)
- 点击页面上出现的所有产品(并在新标签中打开每个产品)
- 浏览每个打开的标签(从第 2 步开始),复制“产品标题”并将其粘贴到 A 列
您能帮我更新代码以包含循环吗:
- 遍历每个打开的选项卡(从第 2 步开始)并复制价格元素并将其粘贴到与产品标题对应的 B 列中
HTML 元素的价格是“649”
Sub launch_product()
Dim IE As SHDocVw.InternetExplorer
Dim idoc As MSHTML.HTMLDocument
Dim doc_ele As MSHTML.IHTMLElement
Dim doc_eles As MSHTML.IHTMLElementCollection
Dim startoftitle As Integer, endoftitle As Integer, rownum As Long
Dim vouterHTML As String, ProductTitle As String
Set IE = New SHDocVw.InternetExplorer
IE.Visible = True
IE.Navigate "https://www.amazon.in/s?k=rudra+fashion&rh=p_n_size_two_browse-vebin%3A1975333031&dc&crid=2AKWK100N33Q9&qid=1574534623&rnid=1974754031&sprefix=rudra+fas%2Caps%2C287&ref=sr_nr_p_n_size_two_browse-vebin_8"
Do While IE.ReadyState <> READYSTATE_COMPLETE
Application.StatusBar = "Loading"
Loop
Set idoc = IE.Document
Set doc_eles = idoc.getElementsByTagName("img")
rownum = 1
For Each doc_ele In doc_eles
If doc_ele.className = "s-image" Then
doc_ele.Click
vouterHTML = doc_ele.outerHTML
startoftitle = InStr(1, vouterHTML, "alt=") + 5
endoftitle = InStr(startoftitle, vouterHTML, """") - 1
ProductTitle = Mid(vouterHTML, startoftitle, endoftitle - startoftitle + 1)
ActiveSheet.Cells(rownum, 1).Value = ProductTitle
rownum = rownum + 1
End If
Next doc_ele
ActiveSheet.Columns(1).EntireColumn.AutoFit
IE.Quit
结束子
【问题讨论】:
-
你为什么要去不同的页面和不同的标签?不是所有信息都在一页上吗?
-
它在一页上,如果你能帮我得到它。我按计划浏览每一页,以便从每一页获取更多信息,但目前从一页抓取信息就可以了
标签: html vba web web-scraping screen-scraping