【问题标题】:Ruby Mechanize 404 => Net::HTTPNotFoundRuby 机械化 404 => Net::HTTPNotFound
【发布时间】:2016-04-17 09:23:21
【问题描述】:

我有一个无法使用 Mechanize 访问的 URL,但我不知道为什么:

# Use ruby 2.1.6
require 'mechanize'
require 'axlsx' # 2.0.1
require 'roo' # 1.13.2

mechanize = Mechanize.new
mechanize.request_headers = { "Accept-Encoding" => "" }
mechanize.ignore_bad_chunking = true
mechanize.follow_meta_refresh = true

xlsx = Roo::Excelx.new("./base_list.xlsx")

xlsx.each_with_pagename do |page, sheet|
  sheet.each do |row|
    page = mechanize.get(row[0])
  end
end

当我在我的列表上进行迭代时,我得到如下网址:https://angel.co/_helencousins,我可以使用浏览器访问它,但不能使用 Mechanize,并且出现此错误:

/.rvm/gems/ruby-2.1.6/gems/mechanize-2.7.4/lib/mechanize/http/agent.rb:316:in `fetch': 404 => Net::HTTPNotFound for https://angel.co/_helencousins -- unhandled response (Mechanize::ResponseCodeError)
    from /Users/xxx/.rvm/gems/ruby-2.1.6/gems/mechanize-2.7.4/lib/mechanize.rb:464:in `get'
    from scraper.rb:15:in `block (2 levels) in <main>'
    from /Users/xxx/.rvm/gems/ruby-2.1.6/gems/roo-1.13.2/lib/roo/base.rb:428:in `block in each'
    from /Users/xxx/.rvm/gems/ruby-2.1.6/gems/roo-1.13.2/lib/roo/base.rb:427:in `upto'
    from /Users/xxx/.rvm/gems/ruby-2.1.6/gems/roo-1.13.2/lib/roo/base.rb:427:in `each'
    from scraper.rb:14:in `block in <main>'
    from /Users/xxx/.rvm/gems/ruby-2.1.6/gems/roo-1.13.2/lib/roo/base.rb:398:in `block in each_with_pagename'
    from /Users/xxx/.rvm/gems/ruby-2.1.6/gems/roo-1.13.2/lib/roo/base.rb:397:in `each'
    from /Users/xxx/.rvm/gems/ruby-2.1.6/gems/roo-1.13.2/lib/roo/base.rb:397:in `each_with_pagename'
    from scraper.rb:13:in `<main>'

【问题讨论】:

  • 他们嗅探请求的用户代理信息并拒绝任何非标准浏览器的可能性非常大。首先,您应该查看他们是否有 API,如果有,请使用它。如果他们不寻找他们的 TOS 并查看他们是否允许机械化刮削。如果是这样,请尝试更改您的用户代理字符串或联系他们的站点管理员并寻求帮助。

标签: ruby mechanize mechanize-ruby


【解决方案1】:

好的,

问题是网站禁用了 Mechanize 用户代理。

我刚改成:mechanize.user_agent_alias = 'Windows Chrome'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-13
    • 2013-09-07
    • 2012-08-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多