【问题标题】:What ruby gem provides the function to extract the content from web pages?什么 ruby​​ gem 提供从网页中提取内容的功能?
【发布时间】:2012-12-26 09:04:35
【问题描述】:

我正在为我的 ruby​​ on rails 项目寻找一个 ruby​​ gem,用于从网页中提取内容。我找到了ruby-readability gem,但它不支持多页文章。你能推荐一个也支持多页文章提取的gem吗?

或者我如何编写识别文章中多个网站的功能?

谢谢

【问题讨论】:

    标签: ruby-on-rails gem html-content-extraction


    【解决方案1】:

    您可以使用像Pismo 这样的高级gem 结合Mechanize 来迭代地遍历每个页面并连接文章的正文。为此,您需要知道哪个链接将您带到下一页。 Google 正在推动采用基于 rel 属性的约定

    <a href="blog-post?page=2" rel='next'>next</a>

    这是一个非常粗略的 ruby​​ 代码草稿:

    agent = WWW::Mechanize.new
    agent.get("http://www.awesomeblog.com/amazing-article")
    
    scraper.text = MyScraper.new(:text => Pismo::Document.new(agent.url))
    
    while agent.page.link_with("rel='next'").click do
      pismo_doc = Pismo::Document.new(agent.url)
      scraper.text << pismo_doc.lede
    end
    
    scraper.save!
    

    这是伪代码/胡乱猜测(我不知道 mechanize 的 API),但你明白了。

    【讨论】:

    • pismo 很棒,比 ruby​​ 可读性更好。但它不支持多页文章:this one。它只提取我当前页面,仅此而已。 pocket 是如何提供这个功能来提取多页文章中的多页的?
    • 是的,Instapaper 也知道如何做到这一点。恐怕您必须为这样的功能进行低级抓取。这取决于每个站点的 html 结构。谷歌正在推动一些约定,以更好地索引文章的内容,例如添加 rel='next'。但那里是一片丛林:-)
    • @charlysisto 是的,我知道,但您的回答没有回答我的问题。我知道像 nokogiri 或 pismo 等宝石。但我的问题是:怎么做
    • @sn3ek 你说得对,我读得很快。我会试一试,但这将是一个方向,而不是洞的东西......
    • 感谢您的示例代码。这有很大帮助。但是如果没有 rel 链接 'next' 就会有问题。我尝试解析链接结构。它适用于某些页面。但是还有很多其他问题。所以目前它并不能解决整个问题。
    猜你喜欢
    • 1970-01-01
    • 2016-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-03
    • 2022-08-19
    • 1970-01-01
    相关资源
    最近更新 更多