`

nokogiri抓取网络资源

阅读更多

 写道
Nokogiri (鋸) is an HTML, XML, SAX, and Reader parser. Among Nokogiri’s many features is the ability to search documents via XPath or CSS3 selectors.
XML is like violence - if it doesn’t solve your problems, you are not using enough of it.
 Nokogiri的解析能力+open-uri的网络访问想组合就可以用来抓取网络上的一些资源了,下面的这段代码用来抓取清杯浅酌这个wp博客。由于ruby代码写的比较java化,只能通过平时多写多看来提高自己的美感,高手请飘过。

require 'rubygems'
require 'nokogiri'
require 'open-uri'
desc "Fetch articles from http://xuzhuoer.com/"
task :fetch => :environment do
  ids = Nokogiri::HTML(open("http://xuzhuoer.com/archives/"))
  ids.css('.post li a').each_with_index do |link, index|
    href = link.attr("href")
    doc = Nokogiri::HTML(open(href))
    # get the article's content & title & tag_list
    content = doc.css('.post > .content').inner_html
    title = doc.css('h1').text
    tags = ""
    doc.css('.post_info a').each do |tag|
      tags << tag.text << " "
    end
    # create post and save it
    @post = Post.create!(:body => content, :tag_list => tags.strip!, :title => title )
    # get the article's comments
    doc.css('#comments > .comment').each_with_index do |comment, index|
      author = comment.css('.author').text
      unless comment.css('a[@class="author"]').empty?
        author_url = comment.css('a[@class="author"]').attr('href')
      end
      body = comment.css('.content p').text
      # fetch the author's md5(email) to get gravatar
      md5 = comment.css('img').attr('src').text[31...63]
      # create & save comment
      Comment.create!(:author => author, :author_url => author_url,
          :body => body, :avatar_md5 => md5,
          :commentable_type => "Post",  :commentable_id => @post.id)
      sleep(5)
    end
    sleep(rand(5))
  end
end
 

如果抓取的网站资源需要登陆后才能看到,那么这个方法就显得无能为力了。不过加上Mechanize,结果就可能不一样了。mechazie能够模拟表单的提交并在以后的表单操作中自动设置cookie。

分享到:
评论

相关推荐

    wichita-bridges:Nokogiri抓取JSON Goole映射

    标题中的“wichita-bridges:Nokogiri抓取JSON Goole映射”指的是一个项目,该项目使用了Nokogiri库来从网络上抓取关于威奇托市桥梁的数据,并将其整理成JSON格式,以便可能用于在Google地图上进行可视化展示。...

    web_scraping_project:使用Ruby和Nokogiri,CSV,Pry和HTTParty gem进行网络抓取

    这个项目是一个很好的学习资源,它涵盖了网络爬虫的基本流程和技术,同时也展示了如何结合使用不同的Ruby库来提高开发效率。对于想深入学习Ruby网络爬虫的人来说,这是一个非常有价值的实践项目。

    ed2000-grabber:ed2000的网络抓取器

    它利用Ruby的网络和解析库,如Nokogiri,高效抓取并处理网页数据。通过合理的设计和实现,它能够处理网络异常,并将抓取到的数据存储起来。同时,通过版本控制系统Git进行项目管理,便于代码维护和更新。对于想要...

    ruby实现网页图片抓取

    这个简单的Ruby脚本展示了如何利用Nokogiri解析HTML,Open-URI访问网络资源以及如何处理文件I/O操作来下载图片。尽管代码相对简洁,但已经足够完成基本的网页图片抓取任务。如果你想要扩展此脚本,可以添加更多的...

    ruby_webscraping_talk_source:Ruby的Web抓取对话

    9. **错误处理和重试机制**:网络问题、服务器错误等情况在Web抓取中很常见,因此需要编写错误处理代码并设置重试策略。 10. **Scrapy-Ruby框架**:尽管不是像Python的Scrapy那样广泛使用,但Ruby也有类似框架,如`...

    刮板:使用Nokogiri和Mechanize编译基于Ruby的手工刮板

    在Web抓取场景中,Nokogiri常用于提取网页内容,通过XPath或CSS选择器定位元素,从而获取所需数据。 **Mechanize库** Mechanize是Ruby的一个HTTP客户端库,专为自动化Web浏览和交互设计。它可以模拟浏览器的行为,...

    awesome-web-scraping:用于网络抓取和数据处理的库,工具和API的列表

    【标题】"awesome-web-scraping" 是一个集合了各种用于网络抓取和数据处理的库、工具和API的资源列表。这个项目旨在为开发者提供一个全面的指南,帮助他们在JavaScript、Ruby、Python、Go(Golang)、PHP等语言中...

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

    10. **道德与法律问题**:在进行网络抓取时,必须遵守网站的robots.txt文件规定,尊重版权,不滥用资源,并确保符合当地法律法规。 通过这个“ruby-scraping”项目,学生们将有机会学习到上述这些核心概念,并将...

    spider(java)网络机器人

    【标题】"spider(java)网络机器人"涉及的是利用Java编程语言实现的一种自动化网络数据抓取工具,通常称为网络爬虫。...提供的示例项目为初学者提供了宝贵的参考资源,帮助他们快速入门网络爬虫的开发。

    SinatraWebScraper:一个 sinatra 应用程序,它将抓取特定项目的网页并将该内容作为短信发送

    OpenURI 则是 Ruby 标准库的一部分,用于简化打开和读取网络资源的流程。 3. **Web Scraping 技术**:网页抓取是通过解析 HTML 或其他 web 页面结构来提取有用信息的过程。在本项目中,开发者可能定义了特定的 CSS ...

    NokogiriWebScrapTest1

    在处理网络资源时,确保正确处理编码问题非常重要。Nokogiri允许你在解析文档时指定编码,或者在遇到未知编码时自动检测。 8. **网页抓取最佳实践** - 使用代理IP避免被目标网站封禁。 - 遵守robots.txt文件的...

    bike_scraper:Web App 从 Craigslist 抓取数据

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

    yelp-crawler:Ruby 命令行应用程序,可抓取 Yelp 以获取数据

    **正文** 本文将深入探讨`yelp-crawler`,这是一个基于Ruby语言的命令行应用程序,专为抓取Yelp网站上的餐厅数据而设计。...对于学习Ruby编程、网络爬虫技术和数据分析的开发者来说,这是一个极具价值的学习资源。

    webspider

    它涵盖了HTTP通信、HTML解析、数据提取、链接发现、存储管理等多个关键环节,对于想要深入理解和开发网络爬虫的开发者来说,是一份宝贵的资源。通过研究WebNewsCrawler-1.0实例,用户可以掌握网络爬虫的实用技巧,为...

    [搜索链接]Java网络爬虫(蜘蛛)源码_zhizhu.zip

    Java网络爬虫(蜘蛛)是用于自动抓取互联网信息的一种程序。这个源码包"Java网络爬虫(蜘蛛)源码_zhizhu.zip"提供了一个多年前基于Java JSP技术的网络爬虫应用示例,适合学生进行毕业设计或论文研究。在本文中,我们...

    Alexa网络信息服务_Ruby_Shell_下载.zip

    4. **数据抓取**:为了获取Alexa的数据,项目可能实现了Web抓取技术,使用了如Nokogiri(Ruby的HTML、XML解析库)这样的工具。 5. **数据处理和分析**:获取数据后,可能有对数据进行清洗、转换、统计分析的步骤,...

    不同语言实现的爬虫程序和爬虫框架.zip

    在IT领域,网络爬虫是数据获取的重要工具,它能够自动化地从互联网上抓取大量信息。本资源“不同语言实现的爬虫程序和爬虫框架.zip”包含了一个名为"awesome-crawler-master"的开源项目,这个项目汇集了多种编程语言...

    ruby_web_scraping:一个关于Hacker News,Sinatra和webscraping的不起眼的项目

    到目前为止,我已经完成了一个网络抓取工具,该抓取工具将上述博客文章的顶级评论links.txt并保存到links.txt 。 为了可视化,此工具仅显示上述线程中顶级注释的链接: 接下来,我将在Sinatra上找到一些基本的...

Global site tag (gtag.js) - Google Analytics