【问题标题】:ruby mechanize in FacebookFacebook 上的 ruby​​ 机械化
【发布时间】:2011-01-13 05:39:13
【问题描述】:

我正在尝试单击主页上的“设置”按钮,但是当我这样做时,我会返回此页面:

#<WWW::Mechanize::Page
 {url
  #<URI::HTTP:0x1023c5fc0 URL:http://www.facebook.com/editaccount.php?ref=mb&drop>}
 {meta}
{title nil}
{iframes}
{frames}
{links}
{forms}>

这是..有点空!这些 iframe 和框架的东西可能有问题吗?

【问题讨论】:

  • 我注意到它在 https 连接上进行了某种重定向……这就是我认为的问题……你怎么看?

标签: ruby facebook screen-scraping mechanize


【解决方案1】:

正如 roja 所提到的,您可能需要以下重定向。以下是如何执行此操作的示例:

@agent = Mechanize.new
@agent.redirect_ok = :all
@agent.follow_meta_refresh = :anywhere

那么您几乎可以忽略涉及重定向的事实 - Mechanize 只会将您放在结果页面上。

【讨论】:

  • 如果其他人提供了一个基本足够的答案,最好编辑他们的答案(当你的代表足够高时),或者提供最正确的答案而不是那么参考......即在您自己的答案中填写完整。
  • 感谢您的提示;我已经将此示例用于 Roja 的初始答案。
【解决方案2】:

Facebook 将我重定向到:https://register.facebook.com/editaccount.php,我认为这是最终目的地。假设 WWW::Mechanize 设置为遵循 https 重定向,您也应该到那里结束。

像大多数现代网站一样,大部分 facebook 都是由 javascript 生成的,我认为 WWW::Mechanize 无法应对,这可能是您问题的根源。我建议尝试在您访问的网址附加“?_fb_noscript = 1”时尝试抓取。这会关闭大部分 facebooks javascript 系统,并且应该为您的小机器人提供更顺畅的体验。

(请记住,这只是一个想法,毫无疑问,您所做的任何事情都违反了 Facebook 的使用政策,这使您成为“坏人”。我不容忍这种坏事,并相信应该强迫坏人早睡等... 令人作呕

【讨论】:

  • =) 我只是想以编程方式关闭我的电子邮件通知,这样当我收到太多通知时,我会暂时禁用它们.. 顺便说一下,我没有找到提到 https在 Mechanize RDoc.. 那么它是否设置为默认遵循 https 重定向?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-07
  • 2012-08-05
  • 2016-04-17
  • 1970-01-01
  • 2012-02-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多