ruby - 自动网页抓取问题

标签 ruby mechanize watir ole phantomjs

我正在开发一个相当大的自动化应用程序,从各种状态数据库中抓取各种废弃的属性信息,以便找到特定的属性。我已经使用各种形式的自动化为大约 8 个州网站开发了搜索脚本。我更喜欢使用 ruby​​ 的 Mechanize 库之类的东西来执行自动化,因为这是我迄今为止遇到的最稳定的方法。在某些情况下,我无法使用 Mechanize 自动进行抓取,必须退回到 Watir 之类的东西(或者,更具体地说,Watir 的分支称为 Vapir)。当源需要搜索 javascript 时,特别需要 Vapir,因为 Mechanize 只发出 HTTP 请求,不处理 JS 解释。

我的问题是 Vapir 自动化 Internet Explorer 的一个实例。在某些情况下,经过长时间的搜索(其中一些搜索是针对 4,000 多个搜索词的列表),IE 会锁定。我认为这是 OLE 引擎的问题。我收到的错误如下:

failed to create WIN32OLE object from `InternetExplorer.Application' HRESULT error code:0x80004005 Unspecified error

我找不到任何东西来解决这个问题。

我的问题是,是否有人知道锁定的自动化 OLE 实例的任何解决方案或变通方法?要修复该错误,我必须手动终止所有 IE 进程并重新启动自动搜索。

我所知道的替代方案是通过 Vapir 自动化 Firefox在后端(而不是 IE),或者可能切换到类似 PhantomJS 的东西.有人对这两种选择有意见吗?

最佳答案

您是否有使用 Vapir 的原因?为什么不试试watir (驱动 Internet Explorer)或 watir-webdriver (驱动 Internet Explorer、Firefox、Chrome 和 Opera) gem ?

安装见 https://github.com/zeljkofilipin/watirbook/blob/master/installation/windows.md

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

相关文章:

ruby-on-rails - 找不到 gem 'rails (= 4.2.4) x64-mingw32'

ruby-on-rails - 如何在 Rails 中声明动态路由作用域/命名空间变量?

ruby - 使用 ruby​​ 中的 Mechanize 定位表单

html - 如何获取隐藏元素的值? (瓦蒂尔)

ruby-on-rails - 如何在 Ruby 中通过元编程访问顶级命名空间?

ruby-on-rails - 系统堆栈错误 : level too deep after running db:seed

perl - 使用 WWW::Mechanize 查找包含粗体文本的链接

python - 'HTTP Error 403: request disallowed by robots.txt' 是在哪一边生成的?

ruby - 如何在延迟加载图像的网页上使用 watir webdriver 捕获屏幕截图

ruby - 安装 ruby​​installer-1.9.2-p136 后运行 watir 脚本时出现错误 "msvcrt-ruby18.dll is missing"