使用 Typhoeus 和 Ruby 編寫的爬蟲程式

金木大大大發表於2023-10-19

 以下是一個使用 Typhoeus 和 Ruby 編寫的爬蟲程式,用於爬取 ,同時使用了 jshk.com.cn/get\_proxy 這段程式碼獲取代理:

```ruby

#!/usr/bin/env ruby


require 'typhoeus'

require 'json'


def get_proxy

  url = "

  response = Typhoeus.get(url)

  if response.code == 200

    proxy_json = JSON.parse(response.body)

    proxy_ip = proxy_json['data']['ip']

    proxy_port = proxy_json['data']['port']

    return proxy_ip, proxy_port

  end

rescue Typhoeus::Error => e

  puts "Error: #{e.message}"

  exit(1)

end


def crawl_ebay(proxy_ip, proxy_port)

  url = "

  headers = {

    'User-Agent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36',

    'Accept' => 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',

    'Accept-Language' => 'zh-CN,zh;q=0.8,en-US;q=0.6,en;q=0.4',

    'Accept-Encoding' => 'gzip, deflate, br',

    'Referer' => '

    'Connection' => 'keep-alive'

  }


  # 使用 Typhoeus 的 Hydra 物件進行併發請求

  hydra = Typhoeus::Hydra.new


  # 建立一個使用代理的請求

  request = Typhoeus::Request.new(url, headers: headers, proxy: { ip: proxy_ip, port: proxy_port })


  # 使用 Hydra 物件傳送請求

  response = hydra.queue(request)


  # 如果請求成功,輸出響應體

  if response.code == 200

    puts "Request successful. Response body: #{response.body}"

  # 如果請求失敗,輸出錯誤資訊

  else

    puts "Request failed. Error: #{response.code}"

  end


  # 關閉 Hydra 物件

  hydra.close

end


# 獲取代理

proxy_ip, proxy_port = get_proxy


# 使用獲取到的代理進行爬取

crawl_ebay(proxy_ip, proxy_port)

```

這個程式首先獲取一個代理IP和埠,然後使用這個代理進行 ebay.com 的爬取。請注意,這個示例程式碼可能會隨著網站的變化而失效,您可能需要根據實際情況進行調整。同時,請注意,在使用這個程式之前,請確保已經安裝了 Typhoeus 庫。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70032566/viewspace-2989756/,如需轉載,請註明出處,否則將追究法律責任。

相關文章