【问题标题】:Mechanize returns `connect_nonblock': SSL_connect returned=1 errno=0 state=SSLv3Mechanize 返回 `connect_nonblock': SSL_connect returned=1 errno=0 state=SSLv3
【发布时间】:2017-01-10 00:46:07
【问题描述】:

我正在尝试抓取 Crunchbase 页面,但出现此错误:

ryzal~/Desktop/Sites/scraper$ ruby scraper.rb
/Users/Ryzal/.rbenv/versions/2.3.1/lib/ruby/2.3.0/net/http.rb:933:in `connect_nonblock': SSL_connect returned=1 errno=0 state=SSLv3 read server hello A: sslv3 alert handshake failure (OpenSSL::SSL::SSLError)
    from /Users/Ryzal/.rbenv/versions/2.3.1/lib/ruby/2.3.0/net/http.rb:933:in `connect'
    from /Users/Ryzal/.rbenv/versions/2.3.1/lib/ruby/2.3.0/net/http.rb:863:in `do_start'
    from /Users/Ryzal/.rbenv/versions/2.3.1/lib/ruby/2.3.0/net/http.rb:858:in `start'
    from /Users/Ryzal/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/net-http-persistent-2.9.4/lib/net/http/persistent.rb:700:in `start'
    from /Users/Ryzal/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/net-http-persistent-2.9.4/lib/net/http/persistent.rb:631:in `connection_for'
    from /Users/Ryzal/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/net-http-persistent-2.9.4/lib/net/http/persistent.rb:994:in `request'
    from /Users/Ryzal/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/mechanize-2.7.5/lib/mechanize/http/agent.rb:274:in `fetch'
    from /Users/Ryzal/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/mechanize-2.7.5/lib/mechanize.rb:464:in `get'
    from scraper.rb:10:in `<main>'

下面是代码:

require 'nokogiri'
require 'mechanize'
require 'json'


agent = Mechanize.new do |a|
  a.ssl_version = :TLSv1
end

page = agent.get "https://www.crunchbase.com/app/search/people/0b543c0d8ea4c95cdf78a48583d501da2a76b26c"

member_links = page.links_with(href: %r{.*/person/\w+})

member_links.map do |link|  
    puts member_counter

    member = link.click

    # Get name
    name = member.search('#profile_header_heading').text.strip
    puts "#{name}"
end 

我已经尝试了这两种解决方案:

Ruby Mechanize https error Mechanize getting "Errno::ECONNRESET: Connection reset by peer - SSL_connect"

但同样的错误仍然存​​在。

请帮忙,谢谢!

【问题讨论】:

    标签: ruby ssl web-scraping mechanize mechanize-ruby


    【解决方案1】:

    尝试关注

    agent = Mechanize.new
    agent.agent.http.verify_mode = OpenSSL::SSL::VERIFY_NONE
    

    【讨论】:

    • 我得到了.../gems/mechanize-2.7.5/lib/mechanize/http/agent.rb:323:in fetch': 416 => Net::HTTPRequestedRangeNotSatisfiable for ...`
    • @RizalYusoff Crunchbase 是 5 次请求后的块 IP。所以它给出了错误代码416。对于解决方案,您可以尝试在 mechanize 中设置代理 ip。
    猜你喜欢
    • 2015-03-01
    • 2012-05-30
    • 2016-01-15
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 2014-11-06
    • 1970-01-01
    • 2015-12-02
    相关资源
    最近更新 更多