当前位置: 首页 > news >正文

ruby语言怎么写个通用爬虫程序?

Ruby语言爬虫是指使用Ruby编写的网络爬虫程序,用于自动化地从互联网上获取数据。其中,CRawler是一个基于文本的小型地牢爬虫,它被设计为可扩展,所有游戏数据均通过JSON文件提供,程序仅处理游戏引擎。除此之外,还有其他令人敬畏的网络爬虫,蜘蛛和各种语言的资源,如Python、Java、C#、JavaScript、PHP、C++、Ruby、R、Erlang、Perl、Go、Scala等。

在这里插入图片描述

1、Ruby语言爬虫是指使用Ruby编写的网络爬虫程序,用于自动化地从互联网上获取数据。

2、CRawler是一个基于文本的小型地牢爬虫,它被设计为可扩展,所有游戏数据均通过JSON文件提供,程序仅处理游戏引擎。

3、除了CRawler之外,还有其他令人敬畏的网络爬虫,蜘蛛和各种语言的资源,如Python、Java、C#、JavaScript、PHP、C++、Ruby、R、Erlang、Perl、Go、Scala等。

上代码

require 'open-uri'
require 'nokogiri'
require 'watir'# 设置爬虫ip服务器信息
proxy_host = 'duoip'
proxy_port = '8000'# 创建一个爬虫ip服务器对象
proxy = URI::HTTP.build(host: proxy_host, port: proxy_port)# 使用Nokogiri库解析网页内容
html = open('meeting.tencent', http_proxy: proxy)
doc = Nokogiri::HTML(html)# 使用Watir库遍历网页中的所有视频链接
browser = Watir::Browser.new(:chrome)
browser.goto 'meeting.tencent'
links = browser.linkslinks.each do |link|link_url = link.hrefif link_url =~ /video/ # 判断链接是否指向视频browser.goto link_urlvideo_url = browser.title # 获取视频URLputs video_urlend
end

这段代码首先导入了所需的库,包括OpenURI、Nokogiri和Watir。然后,它设置了爬虫ip服务器的主机名和端口号,并创建了一个爬虫ip服务器对象。接着,它使用Nokogiri库解析了指定网页的内容,并使用Watir库遍历了网页中的所有链接。对于每个链接,它检查是否指向视频,如果是,则获取该视频的URL并打印出来。注意,这段代码需要在安装了OpenSSL和谷歌浏览器的环境中运行。

相关文章:

  • gcc -static 在centos stream8 和centos stream9中运行报错的解决办法
  • Linux中的进程等待
  • Spring-Spring 之底层架构核心概念解析
  • Zabbix如何监控腾讯云NAT网关
  • 离散傅里叶变换中的能量守恒公式(帕斯瓦尔定理)及其程序举例验证
  • 根据Word模板,使用POI生成文档
  • Datawhale-AIGC实践
  • 【服务器】Java连接redis及使用Java操作redis、使用场景
  • pytorch笔记 GRUCELL
  • mediasoup-cluster横向扩容机制
  • mac flutter pb解析报错:protoc-gen-dart: program not found or is not executable
  • 蓝桥杯官网练习题(正则问题)
  • openGauss学习笔记-114 openGauss 数据库管理-设置安全策略-设置帐号有效期
  • gcc: __linux__
  • [SSD综述 1.4] SSD固态硬盘的架构和功能导论
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • css的样式优先级
  • django开发-定时任务的使用
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • 关于Flux,Vuex,Redux的思考
  • 设计模式走一遍---观察者模式
  • 优化 Vue 项目编译文件大小
  • 追踪解析 FutureTask 源码
  • 字符串匹配基础上
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • #ubuntu# #git# repository git config --global --add safe.directory
  • #WEB前端(HTML属性)
  • $NOIp2018$劝退记
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (初研) Sentence-embedding fine-tune notebook
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (论文阅读30/100)Convolutional Pose Machines
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (一)kafka实战——kafka源码编译启动
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • .bat批处理(九):替换带有等号=的字符串的子串
  • .NET Remoting Basic(10)-创建不同宿主的客户端与服务器端
  • .net 程序发生了一个不可捕获的异常
  • .net 调用php,php 调用.net com组件 --
  • .NET应用架构设计:原则、模式与实践 目录预览
  • .NET与java的MVC模式(2):struts2核心工作流程与原理
  • /bin、/sbin、/usr/bin、/usr/sbin
  • @Repository 注解
  • [ C++ ] template 模板进阶 (特化,分离编译)
  • [ vulhub漏洞复现篇 ] AppWeb认证绕过漏洞(CVE-2018-8715)
  • [8-27]正则表达式、扩展表达式以及相关实战
  • [Android] Amazon 的 android 音视频开发文档
  • [AX]AX2012 SSRS报表Drill through action
  • [CISCN2021 Quals]upload(PNG-IDAT块嵌入马)