Mogę ci w tym pomóc. W rzeczywistości nie jest to takie trudne.
open("http://...", :http_basic_authentication=>[user, password])
A jeśli chcesz parsować, możesz nawet dostosować mojego robota. Oto główna metoda w nim.
require "open-uri"
require "zlib"
SHINSO_HEADERS = {
'Accept' => '*/*',
'Accept-Charset' => 'utf-8, windows-1251;q=0.7, *;q=0.6',
'Accept-Encoding' => 'gzip,deflate',
'Accept-Language' => 'bg-BG, bg;q=0.8, en;q=0.7, *;q=0.6',
'Connection' => 'keep-alive',
'Cookie' => '',
'From' => '[email protected]',
'Referer' => 'http://svejo.net/',
'User-Agent' => 'Your user agent'
}
def crawl(url_address)
self.errors = Array.new
begin
begin
url_address = URI.parse(url_address)
rescue URI::InvalidURIError
url_address = URI.decode(url_address)
url_address = URI.encode(url_address)
url_address = URI.parse(url_address)
end
url_address.normalize!
stream = ""
timeout(8) { stream = url_address.open(SHINSO_HEADERS) }
if stream.size > 0
url_crawled = URI.parse(stream.base_uri.to_s)
else
self.errors << "Server said status 200 OK but document file is zero bytes."
return
end
rescue Exception => exception
self.errors << exception
return
end
end
url_crawled co trzeba w końcu.
Spróbuj użyć tego adresu do testu. https://developer.mozilla.org/en-US/docs/HTTP_access_control
Jeśli nadal występują błędy, serwer może nie być poprawnie skonfigurowany, upewnij się, że jest on poprawny i powinieneś to sprawdzić.
Jeśli chodzi o uwagę, jeśli poważnie zastanawiasz się nad parsowaniem, możesz również rozważyć użycie klejnotu Charguess i Zlib do odczytania treści, a następnie przekonwertowanie problematycznych z Iconv. Oto przykład.
if stream.content_encoding.include?('gzip')
document = Zlib::GzipReader.new(stream).read
elsif stream.content_encoding.include?('deflate')
document = Zlib::Deflate.new().deflate(stream).read
#elsif stream.content_encoding.include?('x-gzip') or
#elsif stream.content_encoding.include?('compress')
else
document = stream.read
end
self.charset_guess = CharGuess.guess(document)
Następnie wystarczy użyć Iconv na treści.
Mam nadzieję, że to pomoże.
Pozdrawiam, Yavor
Dzięki temu spróbuję! – Symba
Net/http obsługuje https, ale musisz ustawić flagę use_ssl na żądanie –
Dzięki Frederick. Usunięto ten fragment teraz. –