写道
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映射”指的是一个项目,该项目使用了Nokogiri库来从网络上抓取关于威奇托市桥梁的数据,并将其整理成JSON格式,以便可能用于在Google地图上进行可视化展示。...
这个项目是一个很好的学习资源,它涵盖了网络爬虫的基本流程和技术,同时也展示了如何结合使用不同的Ruby库来提高开发效率。对于想深入学习Ruby网络爬虫的人来说,这是一个非常有价值的实践项目。
它利用Ruby的网络和解析库,如Nokogiri,高效抓取并处理网页数据。通过合理的设计和实现,它能够处理网络异常,并将抓取到的数据存储起来。同时,通过版本控制系统Git进行项目管理,便于代码维护和更新。对于想要...
这个简单的Ruby脚本展示了如何利用Nokogiri解析HTML,Open-URI访问网络资源以及如何处理文件I/O操作来下载图片。尽管代码相对简洁,但已经足够完成基本的网页图片抓取任务。如果你想要扩展此脚本,可以添加更多的...
9. **错误处理和重试机制**:网络问题、服务器错误等情况在Web抓取中很常见,因此需要编写错误处理代码并设置重试策略。 10. **Scrapy-Ruby框架**:尽管不是像Python的Scrapy那样广泛使用,但Ruby也有类似框架,如`...
在Web抓取场景中,Nokogiri常用于提取网页内容,通过XPath或CSS选择器定位元素,从而获取所需数据。 **Mechanize库** Mechanize是Ruby的一个HTTP客户端库,专为自动化Web浏览和交互设计。它可以模拟浏览器的行为,...
【标题】"awesome-web-scraping" 是一个集合了各种用于网络抓取和数据处理的库、工具和API的资源列表。这个项目旨在为开发者提供一个全面的指南,帮助他们在JavaScript、Ruby、Python、Go(Golang)、PHP等语言中...
10. **道德与法律问题**:在进行网络抓取时,必须遵守网站的robots.txt文件规定,尊重版权,不滥用资源,并确保符合当地法律法规。 通过这个“ruby-scraping”项目,学生们将有机会学习到上述这些核心概念,并将...
【标题】"spider(java)网络机器人"涉及的是利用Java编程语言实现的一种自动化网络数据抓取工具,通常称为网络爬虫。...提供的示例项目为初学者提供了宝贵的参考资源,帮助他们快速入门网络爬虫的开发。
OpenURI 则是 Ruby 标准库的一部分,用于简化打开和读取网络资源的流程。 3. **Web Scraping 技术**:网页抓取是通过解析 HTML 或其他 web 页面结构来提取有用信息的过程。在本项目中,开发者可能定义了特定的 CSS ...
在处理网络资源时,确保正确处理编码问题非常重要。Nokogiri允许你在解析文档时指定编码,或者在遇到未知编码时自动检测。 8. **网页抓取最佳实践** - 使用代理IP避免被目标网站封禁。 - 遵守robots.txt文件的...
项目的核心功能是抓取Craigslist的数据,这需要使用到网络爬虫。网络爬虫是一种自动遍历和提取网页信息的程序。在这个Web App中,可能使用了Ruby的Nokogiri库解析HTML,或者利用HTTP客户端库如HTTParty来发送请求并...
**正文** 本文将深入探讨`yelp-crawler`,这是一个基于Ruby语言的命令行应用程序,专为抓取Yelp网站上的餐厅数据而设计。...对于学习Ruby编程、网络爬虫技术和数据分析的开发者来说,这是一个极具价值的学习资源。
它涵盖了HTTP通信、HTML解析、数据提取、链接发现、存储管理等多个关键环节,对于想要深入理解和开发网络爬虫的开发者来说,是一份宝贵的资源。通过研究WebNewsCrawler-1.0实例,用户可以掌握网络爬虫的实用技巧,为...
Java网络爬虫(蜘蛛)是用于自动抓取互联网信息的一种程序。这个源码包"Java网络爬虫(蜘蛛)源码_zhizhu.zip"提供了一个多年前基于Java JSP技术的网络爬虫应用示例,适合学生进行毕业设计或论文研究。在本文中,我们...
4. **数据抓取**:为了获取Alexa的数据,项目可能实现了Web抓取技术,使用了如Nokogiri(Ruby的HTML、XML解析库)这样的工具。 5. **数据处理和分析**:获取数据后,可能有对数据进行清洗、转换、统计分析的步骤,...
在IT领域,网络爬虫是数据获取的重要工具,它能够自动化地从互联网上抓取大量信息。本资源“不同语言实现的爬虫程序和爬虫框架.zip”包含了一个名为"awesome-crawler-master"的开源项目,这个项目汇集了多种编程语言...
到目前为止,我已经完成了一个网络抓取工具,该抓取工具将上述博客文章的顶级评论links.txt并保存到links.txt 。 为了可视化,此工具仅显示上述线程中顶级注释的链接: 接下来,我将在Sinatra上找到一些基本的...