使用 Typhoeus 和 Ruby 编写的爬虫程序

以下是一个使用 Typhoeus 和 Ruby 编写的爬虫程序,用于爬取 ,同时使用了 jshk.com.cn/get_proxy 这段代码获取代理:

ruby 复制代码
#!/usr/bin/env ruby

require 'typhoeus'
require 'json'

def get_proxy
  url = "https://www.duoip.cn/get_proxy"
  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 = "https://www.ebay.com"
  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' => 'https://www.google.com',
    '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 库。

相关推荐
iCxhust15 分钟前
C#进程管理程序
开发语言·汇编·stm32·单片机·c#·微机原理
凡人叶枫22 分钟前
Effective C++ 条款28:避免使用 handles 指向对象内部
linux·服务器·开发语言·c++·嵌入式开发
努力成为AK大王32 分钟前
并发编程的核心挑战、优化方案与核心知识点总结
java·开发语言·数据库
数据知道34 分钟前
指纹浏览器本地存储“孤岛化”:IndexedDB、LocalStorage、SessionStorage 的安全隔离
爬虫·安全·数据采集·指纹浏览器
AI 编程助手GPT1 小时前
用 Python 做一个世界杯赛前分析脚本:以巴西 vs 摩洛哥为例
开发语言·网络·人工智能·python·chatgpt
lihao lihao1 小时前
Linux信号
开发语言·c++·算法
Java患者·2 小时前
《Python 人脸识别入门实践:从人脸检测到人脸比对完整实现》
开发语言·python·opencv·目标检测·计算机视觉·目标跟踪·视觉检测
ceclar1232 小时前
C# 的任务并行库(TPL)
开发语言·c#·.net
快乐的哈士奇2 小时前
【Next.js实战①】Gmail API 按柜号检索邮件:OAuth 双 Cookie 与搜索 Fallback
开发语言·javascript·ecmascript
weixin_307779132 小时前
Python写入Shell文件使用Linux系统的换行符
linux·开发语言·python·自动化