首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有另一种方法可以使用Ruby中的while循环获得最后加载的数据?

是否有另一种方法可以使用Ruby中的while循环获得最后加载的数据?
EN

Stack Overflow用户
提问于 2019-11-17 16:36:22
回答 1查看 34关注 0票数 0

我正在用一个动态网站做一个网页抓取,这个动态网站有一个“加载更多”按钮。虽然我通过使用while循环来解决负载更多的问题。当我试图刮取数据时,它还面临着另一个挑战--它一直在成倍增长。所以第一批数据是24个数据,当我刮第二批数据的时候,它也会刮第一批数据,所以它刮了48个数据,只添加了24个新的数据。

这是我的密码。

代码语言:javascript
复制
        require "selenium-webdriver"

        driver = Selenium::WebDriver.for :chrome
        url ="https://www.example.com/categories/car-parts"

        driver.navigate.to "#{url}"
        wait = Selenium::WebDriver::Wait.new(:timeout => 20)

        while driver.page_source.include? "Load more"

            load_more = wait.until {
              load_more_element = driver.find_element(css: ".styles__loadMore___yYAF4")
            }
            sleep 3
            load_more.click()
            puts "load_more"
            sleep 3

            seller_url = wait.until {
          element = driver.find_elements(:css, ".desktop__itemOneFourth___2t71A .styles__link___9msaS:nth-child(1)")

        }
            seller_url.each do |line|
                seller_uri = line.attribute("href")
                seller_hand = seller_uri[/https:\/\/www.example.com(.*\/([.\w+]+))/i]

                seller_handle =  seller_hand.gsub("https://www.example.com/", "")

                seller = Seller.new
                seller.seller_url = seller_uri
                seller.seller_handle = seller_handle

                seller.save
                puts seller_handle
            end

            puts seller_url.size
            sleep 3

我想要的是继续加载,但是我想刮掉最后一个加载的批,减去前一个批。

EN

回答 1

Stack Overflow用户

发布于 2019-11-17 17:25:33

您知道每次单击loaded按钮时加载多少条记录,这样您就可以轻松地访问seller_url数组中的新记录:

代码语言:javascript
复制
items_per_page = 24

while driver.page_source.include? "Load more"
  # ...

  seller_url = wait.until {
    element = driver.find_elements(:css, ".desktop__itemOneFourth___2t71A .styles__link___9msaS:nth-child(1)")
  }

  seller_url.last(items_per_page).each do |line|
    # do stuff
  end

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

https://stackoverflow.com/questions/58902681

复制
相关文章

相似问题

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