ruby语言怎么写个通用爬虫程序?
在Ruby中,我们可以使用Mechanize
和Nokogiri
这两个库来编写一个通用的网络爬虫程序。以下是一个简单的例子:
首先,你需要安装这两个库:
gem install mechanize nokogiri
然后,你可以使用以下代码来创建一个简单的通用网络爬虫:
require 'mechanize'
require 'nokogiri'
class GenericCrawler
def initialize(seed_url)
@agent = Mechanize.new
@seed_url = seed_url
end
def crawl
page = @agent.get(@seed_url)
parse_page(page)
end
private
def parse_page(page)
doc = Nokogiri::HTML(page.body)
# 提取页面上的链接并进行爬取
doc.css('a').each do |link|
next if link['href'].nil?
url = link['href']
begin
page = @agent.get(url)
puts "Crawled: #{page.uri}"
parse_page(page)
rescue Mechanize::ResponseCodeError => e
puts "Error crawling: #{url} - #{e.response_code}"
end
end
end
end
# 使用示例
crawler = GenericCrawler.new('http://example.com')
crawler.crawl
这个爬虫程序会从给定的种子URL开始,然后提取该页面上的所有链接,并递归地对每个链接进行爬取。这个例子只是一个简单的展示,实际的爬虫程序需要根据具体需求进行更复杂的处理。
评论已关闭