加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 如何使用JavaScript添加动态内容来抓取网页?

发布时间:2020-12-17 03:16:41 所属栏目:百科 来源:网络整理
导读:我试图刮掉 this webpage,它有懒惰的负载,因为我们滚动它加载.使用Nokogiri我能够抓取初始页面,但不能滚动后加载的页面的其余部分. 解决方法 要获取延迟加载的页面,请删除以下页面: http://www.flipkart.com/mens-footwear/shoes/casual-shoes/pr?p%5B%5D=s
我试图刮掉 this webpage,它有懒惰的负载,因为我们滚动它加载.使用Nokogiri我能够抓取初始页面,但不能滚动后加载的页面的其余部分.

解决方法

要获取延迟加载的页面,请删除以下页面:

http://www.flipkart.com/mens-footwear/shoes/casual-shoes/pr?p%5B%5D=sort%3Dpopularity&sid=osp%2Ccil%2Cnit%2Ce1f&start=31&ajax=true
http://www.flipkart.com/mens-footwear/shoes/casual-shoes/pr?p%5B%5D=sort%3Dpopularity&sid=osp%2Ccil%2Cnit%2Ce1f&start=46&ajax=true
http://www.flipkart.com/mens-footwear/shoes/casual-shoes/pr?p%5B%5D=sort%3Dpopularity&sid=osp%2Ccil%2Cnit%2Ce1f&start=61&ajax=true
...
require 'rubygems'
require 'nokogiri'
require 'mechanize'
require 'open-uri'

number = 1
while true
  url = "http://www.flipkart.com/mens-footwear/shoes" +
        "/casual-shoes/pr?p%5B%5D=sort%3Dpopularity&" +
        "sid=osp%2Ccil%2Cnit%2Ce1f&start=#{number}&ajax=true"

  doc = Nokogiri::HTML(open(url))
  doc = Nokogiri::HTML(doc.at_css('#ajax').text)

  products = doc.css(".browse-product")
  break if products.size == 0

  products.each do |item|
    title = item.at_css(".fk-display-block,.title").text.strip
    price = (item.at_css(".pu-final").text || '').strip
    link = item.at_xpath(".//a[@class='fk-display-block']/@href")
    image = item.at_xpath(".//div/a/img/@src")

    puts number
    puts "#{title} - #{price}"
    puts "http://www.flipkart.com#{link}"
    puts image
    puts "========================"

    number += 1
  end
end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读