我需要抓取多家公司的职业页面(经他们的许可)。
决定我使用什么的重要因素
- 我每天要刮大约 2000 页,所以需要一个相当快速的解决方案
- 其中一些页面在页面加载后通过 ajax 填充数据。
- 我的 webstack 是 Ruby/Rails 和 MySql 等。
- 我之前使用scrapy(python)(+ Selenium for ajax enabled pages)编写了刮板。
我的疑惑
- 我很困惑是否应该使用python(即scrapy + Selenium,我认为这是python中最好的选择),还是更喜欢ruby中的东西(因为我的整个代码库都在ruby中)。
- Scrapy + selenium 通常很慢,在 ruby 中是否有更快的替代方案?(这将使决定更容易) 支持 Ajax 加载页面的最受欢迎的 Ruby 替代方案似乎是Watir任何人都可以评论它的速度。还有其他红宝石替代品(例如Mechanize/Nokogiri + Ajax Loaded pages 的其他东西)
编辑
最终使用 Watir-webdriver + Nokogiri,这样我就可以在存储数据的同时利用活动记录。Nokogiri 在提取数据方面比 Watir-webdriver 快得多。
Scrapy 本来会更快,但速度权衡不如在 scrapy 中处理不同类型网站的复杂性权衡重要(例如,在某些目标网站上进行 ajax 驱动的搜索,我必须通过这些)。
希望这可以帮助某人。