首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >eBay产品刮板机

eBay产品刮板机
EN

Stack Overflow用户
提问于 2019-05-28 11:48:00
回答 1查看 747关注 0票数 1

我对VBA非常有限,

代码在一个模块中,代码也有一个子进程,所以如果我把代码发错了,很抱歉

  • ( A)打开IE
  • ( B)子进程获取数据。
  1. 代码在ebay.com上工作得很好,但不适合ebay.co.uk --找不出原因,同时它也将urls转换成超链接。
  2. 它只做第一页,我需要它通过X页-有一个代码,但无法使它工作,所以已经删除它。
  3. Ebay打开后是否可以运行搜索查询,这样就可以打开搜索项,然后将搜索项输入到ebay,然后运行代码,或者从单元格运行,如果其单元格A1提取的数据需要粘贴在A2及以下位置。
  4. 我看过ebay.com和ebay.co.uk的元素,它们在我看来是一样的,所以我无法理解为什么它不能工作,因为它对1不起作用,而对另一个不起作用。
  5. 我确实输入了从几个页面中获取数据的代码--它不起作用。当我从google获取urls时,我知道这段代码的工作原理是一样的。
代码语言:javascript
复制
Public IE As New SHDocVw.InternetExplorer
Sub GetData()

    Dim HTMLdoc As MSHTml.HTMLDocument
    Dim othwb As Variant
    Dim objShellWindows As New SHDocVw.ShellWindows

    Set IE = CreateObject("internetexplorer.application")

        With IE
            .Visible = True
            '.Navigate "https://www.ebay.co.uk/sch/i.html?_from=R40&_trksid=m570.l1313&_nkw=jackets&_sacat=0"
            .Navigate "https://www.ebay.com/sch/i.html_from=R40&_nkw=ralph+lauren&_sacat=1059&LH_TitleDesc=0&_dmd=1&rt=nc"
            While .Busy Or .readyState <> 4: DoEvents: Wend

Set HTMLdoc = IE.document
                ProcessHTMLPage HTMLdoc

            .Quit
        End With


End Sub
code here

    enter 

'''''' THIS IS THE SUB PROCESS '''''


Sub ProcessHTMLPage(HTMLPage As MSHTml.HTMLDocument)

    Dim HTMLItem As MSHTml.IHTMLElement
    Dim HTMLItems As MSHTml.IHTMLElementCollection
    Dim HTMLInput As MSHTml.IHTMLElement
    Dim rownum As Long

    rownum = 1

    Set HTMLItems = HTMLPage.getElementsByClassName("s-item__title")

    For Each HTMLItem In HTMLItems

            Cells(rownum, 1).Value = HTMLItem.innerText
            rownum = rownum + 1

    Next HTMLItem

    rownum = 1

    Set HTMLItems = HTMLPage.getElementsByClassName("s-item__price")

    For Each HTMLItem In HTMLItems

            Cells(rownum, 2).Value = HTMLItem.innerText
            rownum = rownum + 1

    Next HTMLItem

    rownum = 1

  Set HTMLItems = HTMLPage.getElementsByClassName("s-item__link")
    For Each HTMLItem In HTMLItems
             Cells(rownum, 3).Value = HTMLItem.href
            rownum = rownum + 1

    Next HTMLItem

'Converts each text hyperlink selected into a working hyperlink from C1 to 25000 rows
  Range("C1:C25000").Select
    For Each xCell In Selection
        ActiveSheet.Hyperlinks.Add Anchor:=xCell, Address:=xCell.Formula
    Next xCell
Range("C1").Select
End Sub

进入下一页的代码

代码语言:javascript
复制
pageNumber = 1
'i = 2
    If pageNumber >= 6 Then Exit Do 'the first 6 pages
    internetdata.getElementById("pnnext").click 'next web page
    Do While internet.Busy Or internet.readyState <> 4
        DoEvents
    Loop
    Set internetdata = internet.document
    pageNumber = pageNumber + 1
Loop
  1. 不适用于Ebay.co.uk -没有提取结果-在ebay.com中工作良好。
  2. 需要它从X页中获取数据,而不仅仅是1页
  3. Ebay打开后是否可以运行搜索查询,这样就可以打开搜索项,然后将搜索项输入到ebay,然后运行代码,或者从单元格运行,如果其单元格A1提取的数据需要粘贴在A2及以下位置。

这是我的谷歌搜索代码,我已经让它工作,所以搜索来自单元A1,我正在寻找类似的东西,我要看看我是否可以使用这个易趣代码。同样,谷歌搜索的前25页也是如此

代码语言:javascript
复制
enter Sub webpage()

Dim ie As Object
Dim htmlDoc As Object
Dim nextPageElement As Object
Dim div As Object
Dim link As Object
Dim url As String
Dim pageNumber As Long
Dim i As Long

' Takes seach from A1 and places it into google
url = "https://www.google.co.uk/search?q=" & Replace(Worksheets("Sheet1").Range("A1").Value, " ", "+")


Set ie = CreateObject("InternetExplorer.Application")

With ie
    .Visible = True
    .navigate url
    Do While .Busy Or .readyState <> 4
        DoEvents
    Loop
End With


Application.Wait Now + TimeSerial(0, 0, 5)

Set htmlDoc = ie.document


pageNumber = 1
i = 2
Do
    For Each div In htmlDoc.getElementsByTagName("div")
        If div.getAttribute("class") = "r" Then
            Set link = div.getElementsByTagName("a")(0)
            Cells(i, 2).Value = link.getAttribute("href")
            i = i + 1
        End If
    Next div
    If pageNumber >= 25 Then Exit Do 'the first 25 pages
    Set nextPageElement = htmlDoc.getElementById("pnnext")
    If nextPageElement Is Nothing Then Exit Do

    ' Clicks web next page
    nextPageElement.Click 'next web page
    Do While ie.Busy Or ie.readyState <> 4
        DoEvents
    Loop
    Application.Wait Now + TimeSerial(0, 0, 5)
    Set htmlDoc = ie.document
    pageNumber = pageNumber + 1
Loop


MsgBox "All Done"

Set ie = Nothing
Set htmlDoc = Nothing
Set nextPageElement = Nothing
Set div = Nothing
Set link = Nothing

End子代码在这里

EN

回答 1

Stack Overflow用户

发布于 2019-05-28 14:09:52

如果这在eBay上有效,那么您需要自己找出为什么它不适用于ebay.co.uk。我的观点是,如果代码本身起作用,那么我们在这里没有什么可以帮助您的。您需要花一些时间来研究ebay.co.uk并找出差异,因为我确信这是次要的。我无法帮你修复那些实际上没有被破坏的代码。祝你好运。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56341581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档