gpt4 book ai didi

ruby - 抓取启用 ajax 的网页

转载 作者:数据小太阳 更新时间:2023-10-29 07:18:31 26 4
gpt4 key购买 nike

我需要抓取多家公司的招聘页面(在他们允许的情况下)。

决定我使用什么的重要因素

  1. 我每天要抓取大约 2000 页,所以需要相当快的速度解决方案
  2. 其中一些页面在页面加载后通过 ajax 填充数据。
  3. 我的网络堆栈是 Ruby/Rails 和 MySql 等。
  4. 我之前使用 scrapy(python)(+ Selenium 用于支持 ajax 的页面)编写了爬虫。

我的疑问

  1. 我很困惑我是应该使用 python(即 scrapy + Selenium,我认为这是 python 中的最佳选择),还是更喜欢 ruby​​ 中的某些东西(因为我的整个代码库都是在 ruby​​ 中)。
  2. Scrapy + selenium 通常很慢,在 ruby​​ 中有更快的替代品吗?(这会使决策更容易)支持 Ajax 加载页面的最流行的 Ruby 替代品似乎是 Watir 任何人都可以评论它的速度。还有其他 ruby​​ 替代品吗(例如 Mechanize/Nokogiri + Ajax 加载页面的其他东西)

编辑

最终使用 Watir-webdriver + Nokogiri,这样我就可以在存储数据时利用事件记录。 Nokogiri 在提取数据方面比 Watir-webdriver 快得多。

Scrapy 本来会更快,但速度权衡并不像在处理不同类型网站时的复杂性权衡那样重要(例如,在某些目标网站上进行 ajax 驱动的搜索,我必须经历这些)。

希望这对某人有帮助。

最佳答案

如果速度很重要,你可以使用watir-webdriver gem 驱动PhantomJS (支持 JavaScript 的 headless 浏览器)。在 PhantomJS 中打开任何页面,如果 watir-webdriver 太慢而无法从中获取数据,您可以将呈现的 HTML 传递给 Nokogiri .

阅读更多:

关于ruby - 抓取启用 ajax 的网页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19090032/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com