![6449ti9.gif 6449ti9.gif](https://i.hizliresim.com/6449ti9.gif)
![pDHFoUY.png pDHFoUY.png](https://i.imgur.com/pDHFoUY.png)
Merhabalar, ben Bunjo. Bu konuda Ruby'de bulunan Mechanize kütüphanesinin kullanımını anlatacağım.
![pDHFoUY.png pDHFoUY.png](https://i.imgur.com/pDHFoUY.png)
Giriş ve Kurulum
Mechanize, Ruby ile web sayfalarına programatik olarak erişip etkileşim kurmanızı sağlar. Standart bir kütüphane değildir.
Bash:
gem install mechanize
komutu ile kurulumu yapabilirsiniz.
![pDHFoUY.png pDHFoUY.png](https://i.imgur.com/pDHFoUY.png)
Basit Kullanım
Mechanize ile bir web sayfasına erişmek ve sayfanın içeriğini almak için aşağıdaki kodlar kullanılır.
Ruby:
require 'mechanize'
agent = Mechanize.new
page = agent.get('http://example.com')
puts page.title
Belirtilen uzantıya istek atılır ve daha sonrasına sayfa başlığı ekrana yazdırılır.
Sayfa İçeriği ve Elemanlarına Erişim
Belirli bir HTML elemanını bulmak için search metodunu kullanabilirsiniz.
![pDHFoUY.png pDHFoUY.png](https://i.imgur.com/pDHFoUY.png)
Sayfa İçeriği ve Elemanlarına Erişim
Belirli bir HTML elemanını bulmak için search metodunu kullanabilirsiniz.
Ruby:
require 'mechanize'
agent = Mechanize.new
page = agent.get('http://example.com')
# Belirli bir elemanı bulmak
header = page.search('h1').text
puts header
# Tüm bağlantıları bulmak
links = page.links
links.each do |link|
puts link.text
end
![pDHFoUY.png pDHFoUY.png](https://i.imgur.com/pDHFoUY.png)
Formlarla Çalışmak
Mechanize, web formlarını doldurup göndermek için kullanışlıdır. Formu bulup, doldurmalı ve formu göndermelisiniz.
Ruby:
require 'mechanize'
agent = Mechanize.new
page = agent.get('http://example.com/login')
# Formu bulmak
form = page.form_with(action: '/login')
# Form alanlarını doldurmak
form.field_with(name: 'username').value = 'myusername'
form.field_with(name: 'password').value = 'mypassword'
# Formu göndermek
page = form.submit
puts page.title
Sayfa üzerinde bir formu bulmak için form_with metotu kullanılır. Bulunan bu formu bir veri ile doldurmak içinse field_with metotu kullanılır.
Oturum Yönetimi ve Çerezler
Mechanize, oturum yönetimini otomatik olarak sağlar. Bir oturumda, oturum bilgileri ve çerezler saklanır,
bu sayede bir oturum boyunca yapılan istekler arasında oturum devamlılığı sağlanır.
![pDHFoUY.png pDHFoUY.png](https://i.imgur.com/pDHFoUY.png)
Oturum Yönetimi ve Çerezler
Mechanize, oturum yönetimini otomatik olarak sağlar. Bir oturumda, oturum bilgileri ve çerezler saklanır,
bu sayede bir oturum boyunca yapılan istekler arasında oturum devamlılığı sağlanır.
Ruby:
require 'mechanize'
agent = Mechanize.new
# İlk istek: oturum başlatma
login_page = agent.get('http://example.com/login')
# Giriş formunu doldurup gönderme
login_form = login_page.form_with(action: '/login')
login_form.field_with(name: 'username').value = 'myusername'
login_form.field_with(name: 'password').value = 'mypassword'
dashboard_page = login_form.submit
# Oturum devam ettirme: dashboard sayfasına erişim
profile_page = agent.get('http://example.com/profile')
puts profile_page.title
Çerezleri Görüntüleme
Sayfa isteği attıktan sonra size tanımlanan cookie değerlerini bu şekilde çıkartabilirsiniz.
Sayfa isteği attıktan sonra size tanımlanan cookie değerlerini bu şekilde çıkartabilirsiniz.
Ruby:
require 'mechanize'
agent = Mechanize.new
# Bir sayfaya erişim
agent.get('http://example.com')
# Çerezleri görüntüleme
agent.cookie_jar.each do |cookie|
puts "Cookie: #{cookie.name} = #{cookie.value}"
end
Çerez Ekleme
Manuel olarak bir cookie ekleyebilirsiniz.
Manuel olarak bir cookie ekleyebilirsiniz.
Ruby:
require 'mechanize'
agent = Mechanize.new
# Bir sayfaya erişim
agent.get('http://example.com')
# Çerez ekleme
cookie = Mechanize::Cookie.new('my_cookie', 'cookie_value')
cookie.domain = 'example.com'
cookie.path = '/'
agent.cookie_jar.add(cookie)
# Çerezleri kontrol etme
agent.cookie_jar.each do |cookie|
puts "Cookie: #{cookie.name} = #{cookie.value}"
end
Çerez Silme
Belirli bir çerezi veya tüm çerezleri silebilirsiniz.
Belirli bir çerezi veya tüm çerezleri silebilirsiniz.
Ruby:
require 'mechanize'
agent = Mechanize.new
# Bir sayfaya erişim
agent.get('http://example.com')
# Tüm çerezleri silme
agent.cookie_jar.clear
# Çerezleri kontrol etme (hiçbir çerez olmamalı)
puts agent.cookie_jar.inspect
Çerezlerin Kaydedilmesi ve Yüklenmesi
Çerezleri bir dosyaya kaydedip daha sonra bu dosyadan yükleyebilirsiniz. Bu, oturumları sürdürmek için faydalıdır.
Çerezleri bir dosyaya kaydedip daha sonra bu dosyadan yükleyebilirsiniz. Bu, oturumları sürdürmek için faydalıdır.
Ruby:
require 'mechanize'
agent = Mechanize.new
# Bir sayfaya erişim
agent.get('http://example.com')
# Çerezleri bir dosyaya kaydetme
agent.cookie_jar.save_as('cookies.yml', session: true, format: :yaml)
Çerezleri bir dosyadan yüklemek için load metodunu kullanabilirsiniz.
Ruby:
require 'mechanize'
agent = Mechanize.new
# Çerezleri dosyadan yükleme
agent.cookie_jar.load('cookies.yml')
# Oturum devam ettirme: çerezlerle korunan bir sayfaya erişim
page = agent.get('http://example.com/profile')
puts page.title
![pDHFoUY.png pDHFoUY.png](https://i.imgur.com/pDHFoUY.png)
Yönlendirmeleri ve Hataları Yönetmek
Mechanize, otomatik yönlendirmeleri ve HTTP hatalarını yönetir. Yönlendirmeleri kapatabilir veya hataları özel olarak ele alabilirsiniz.
Ruby:
agent = Mechanize.new
agent.redirect_ok = false # Yönlendirmeleri kapatmak
Hataları Yönetmek
Ruby:
begin
page = agent.get('http://example.com/nonexistent')
rescue Mechanize::ResponseCodeError => e
puts "Hata: #{e.response_code}"
end
![pDHFoUY.png pDHFoUY.png](https://i.imgur.com/pDHFoUY.png)
Dosya İndirme
Bir URL'den dosya indirip yerel diskte bir dosyaya kaydedebilirsiniz.
Ruby:
require 'mechanize'
agent = Mechanize.new
agent.get('http://example.com/dosya.zip').save('dosya.zip')
![pDHFoUY.png pDHFoUY.png](https://i.imgur.com/pDHFoUY.png)
Kullanıcı Aracısı ve Başlıkları Değiştirmek
Web isteklerinizin kullanıcı aracısını veya başlıklarını değiştirmek için user_agent ve request_headers ayarlarını kullanabilirsiniz.
Ruby:
require 'mechanize'
agent = Mechanize.new
agent.user_agent_alias = 'Windows Chrome'
agent.request_headers = { "Accept-Language" => "en-US,en;q=0.9" }
page = agent.get('http://example.com')
puts page.title
![pDHFoUY.png pDHFoUY.png](https://i.imgur.com/pDHFoUY.png)
Proxy Bilgilerini Ayarlama
Bir proxy sunucusu kullanmak için agent nesnesinin set_proxy metodunu kullanabilirsiniz.
Ruby:
require 'mechanize'
agent = Mechanize.new
# Proxy bilgilerini ayarlama
proxy_address = 'proxy.example.com'
proxy_port = 8080
agent.set_proxy(proxy_address, proxy_port)
# Web sayfasına istek gönderme
page = agent.get('http://example.com')
puts page.title
Kullanıcı Adı ve Şifre Gerektiren Proxy
Bazı proxy sunucuları kimlik doğrulama gerektirir. Bu durumda, set_proxy metoduna kullanıcı adı ve şifre bilgilerini de ekleyebilirsiniz.
Bazı proxy sunucuları kimlik doğrulama gerektirir. Bu durumda, set_proxy metoduna kullanıcı adı ve şifre bilgilerini de ekleyebilirsiniz.
Ruby:
require 'mechanize'
agent = Mechanize.new
# Proxy bilgilerini ayarlama
proxy_address = 'proxy.example.com'
proxy_port = 8080
proxy_user = 'username'
proxy_pass = 'password'
agent.set_proxy(proxy_address, proxy_port, proxy_user, proxy_pass)
# Web sayfasına istek gönderme
page = agent.get('http://example.com')
puts page.title
![pDHFoUY.png pDHFoUY.png](https://i.imgur.com/pDHFoUY.png)
Konudaki kodlar temsilidir.
Daha fazlası için doküman.