`
kfw5313
  • 浏览: 28942 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

用Ruby抓取网页通过ActiveRecord存到数据库

阅读更多
用Ruby抓取网页通过ActiveRecord存到数据库

工作内容:抓取指定网页的规则的连接地址的内容,并取得其网页中指定部分的内容存到数据库。

技术点1:抓取并分析网页
采用hpricot,其主页可见(http://code.whytheluckystiff.net/hpricot/)。Hpricot is a very flexible HTML parser。
doc = Hpricot(open(url))
这个就是去的url的内容,返回一个doc,这个是Element类的实例对象。也可以认为是一个DOM。
可以对这个对象进行查找,修改等操作,具体见hpricot主页的文档。
技术点2:编码转换
网页可能为gbk编码,也可能为gb2312编码。
数据库为mysql,UTF-8编码,以防万一,在建立数据库连接之后,执行下列语句:
ActiveRecord::Base.connection.execute ‘SET NAMES UTF8′
把mysql客户端的编码也设为UTF8,以防出现乱码。
然后用Iconv转换抓取的数据:

ar_object.some_text = Iconv.new(”UTF-8//IGNORE”,”gb2312″).iconv(gb2312_data )
这个就是把gb2312的数据转换为utf-8了。
另外,不知道不进行上面转换,而直接实用gb2312编码的数据,在建立数据库客户端连接之后,执行
ActiveRecord::Base.connection.execute ‘SET NAMES GB2312′
是不是也可以呢,没试过。
分享到:
评论

相关推荐

    Ruby中访问SQL Server数据库的配置实例

    如果你对数据库操作有更深入的需求,比如数据迁移、数据抓取或者与其他数据库系统的集成,Ruby都有丰富的库可供选择,例如在Rails框架下使用`rake`进行数据库迁移,或者使用`nokogiri`库抓取网页数据并存入数据库。...

    用ruby写的采集程序.zip

    对于数据库操作,可能使用的是ActiveRecord(Ruby on Rails框架的一部分),或者直接使用如SQLite、MySQL或PostgreSQL等数据库的Ruby驱动。 总的来说,这个项目涵盖了以下知识点: 1. Ruby编程基础:变量、控制流...

    ruby实用函数和实例

    最后,Ruby的Gem生态系统提供了大量预包装的库,如ActiveRecord(数据库操作),Sinatra(轻量级Web框架),和GEM(Git版本管理)。这些Gem让开发者能够快速构建各种类型的项目,而无需从零开始。 总之,Ruby的实用...

    Ruby-Yabeda用于从Ruby应用程序收集和导出指标的可扩展框架

    通过这个系统,你可以添加针对不同组件或库的适配器,如Rails、Sidekiq、ActiveRecord等。每个适配器会自动收集特定于该组件的指标,如HTTP请求的响应时间、数据库查询的执行时间等。这使得开发者无需编写大量自定义...

    ruby-scraping:一堆为@LeWagon 学生抓取的 ruby​​ 脚本

    通过这个“ruby-scraping”项目,学生们将有机会学习到上述这些核心概念,并将它们应用到实际的网页抓取任务中。这不仅有助于提升他们的编程技能,也使他们能更好地理解和利用Web上的公开数据。

    Ruby Library QuickRef

    2. **ActiveRecord**:这是Rails的一部分,是一个强大的ORM(Object-Relational Mapping)工具,允许开发者用Ruby对象直接操作数据库,无需编写SQL语句。 3. **ActionPack**:包含了ActionController和ActionView两个...

    毕业设计-通用web信息采集系统RubyonRails

    6. **数据库管理**: 可能使用SQLite、MySQL或PostgreSQL等数据库,通过ActiveRecord进行交互。 7. **视图模板(View Templates)**: 使用ERB(Embedded Ruby)或其他模板语言如Haml和Slim,创建动态网页。 8. **...

    ed2000-grabber:ed2000的网络抓取器

    Ruby有许多库可以支持数据库操作,如ActiveRecord(与Rails框架配套使用)或Sequel,它们可以方便地将数据保存到MySQL、SQLite或PostgreSQL等数据库中。此外,数据也可能被写入文件或JSON格式存储。 **错误处理与...

    blank-activerecord

    您应该使用从CSV,通过抓取的网站或API收集的数据来播种数据库。 您的模型应具有回答有关数据有趣问题的方法。 例如,如果您收集了有关电影评论的信息,那么最受欢迎的电影是什么? 哪部电影的评论最多? 您应该...

    ruby-project-guidelines

    您应该使用从CSV,通过抓取的网站或API收集的数据来播种数据库。 您的模型应具有回答有关数据有趣问题的方法。 例如,如果您收集了有关电影评论的信息,那么最受欢迎的电影是什么? 哪部电影的评论最多? 您应该...

    scrapping_mairies

    【标题】"scrapping_mairies" 是一个与数据抓取相关的项目,主要涉及使用 Ruby 语言进行网页抓取。这个项目的重点在于从市政厅(mairies)的网站上提取信息,可能包括公共服务、活动通知、政策法规等数据。 【描述...

    bike_scraper:Web App 从 Craigslist 抓取数据

    项目的核心功能是抓取Craigslist的数据,这需要使用到网络爬虫。网络爬虫是一种自动遍历和提取网页信息的程序。在这个Web App中,可能使用了Ruby的Nokogiri库解析HTML,或者利用HTTP客户端库如HTTParty来发送请求并...

    Raddit:我建立了一个类似于 Reddit 或 Hacker News 的链接聚合站点。 (Ruby on Rails)

    这可能通过 Nokogiri 或 Open-URI 等库来实现,用于抓取网页内容。 3. **评论功能**:用户可以对链接发表评论,促进讨论。这需要一个评论模型,与帖子关联,并支持嵌套评论,以保持良好的可读性。 4. **投票系统**...

    rental_site_scraper

    通过这个项目,你可以学习到如何利用 Ruby 的强大功能来构建一个能自动浏览网页并提取所需信息的程序。这不仅涉及到网页解析,还涵盖了数据存储和处理,以及可能的错误处理和异常管理。 首先,你需要了解 Ruby 的...

    Lord_of_the_Rings:查找有关您最喜欢的LOTR角色的信息

    如果数据存储在数据库中,我们可以使用ActiveRecord(Ruby on Rails框架的一部分)来操作数据。例如,创建一个角色模型,并从网页抓取的数据填充模型属性: ```ruby class Character < ActiveRecord::Base # 假设...

    beerhunter:寻找安大略省啤酒的最优惠价格

    Ruby 的 ActiveRecord 模块可以方便地与这些数据库进行交互,提供了一种简洁的 ORM(对象关系映射)解决方案。 为了实现用户友好的界面,BeerHunter 可能采用了 Ruby on Rails 框架。Rails 是 Ruby 的一个流行框架...

    Life_style_tools:我每天在一个网站上使用的一些工具

    4. **Web开发**:使用Ruby进行Web开发,开发者可以利用ActionController和ActionView来处理用户请求和呈现响应,ActiveRecord则负责数据库操作。Rails还提供了Turbolinks等技术,用于提升页面加载速度。 5. **自动...

    Matt-TV:最后的项目

    包括:JavaScript,Jquery,HTML / CSS,实时抓取,实时API调用,常规的旧ruby类,activerecord和postgres。 该项目最初是“收藏”电视节目的一种方法,目的是跟踪他们的播出日期/时间和首播时间。 它演变成电视节目...

    比特机器人

    如果比特机器人涉及到数据库操作,`ActiveRecord`(来自Ruby on Rails框架)可能是用于处理数据的对象关系映射库。 在"bitvenue-bot-master"这个文件夹名中,"master"通常表示这是项目的主分支,意味着这包含了最新...

    blacklist_companies:企业黑名单,揭露无良企业的神秘面纱

    1. 数据库:存储黑名单企业的核心部分,可能使用了如SQLite、PostgreSQL或MySQL等数据库系统,用Ruby的ActiveRecord库进行数据操作。 2. API接口:提供RESTful API,使得其他应用可以查询黑名单信息,可能使用了...

Global site tag (gtag.js) - Google Analytics