Dùng mechanize để login và đăng bài viết tự động
TIL
592
White

hoasung01 viết ngày 15/09/2016

Giới thiệu

  • Machenize là một thư viện viết bằng ruby giúp tương tác với web tự động
  • Nếu bạn dùng Nokogiri để scrape data thì Machenize là một dependency đi kèm
  • Mọi người có thể tìm hiểu thêm ở Link
  • Ngoài Machenize thì vẫn có thể dùng các tool khác như Poltergeist (là một PhantomJS driver cho Capybara) và Watir
  • Điểm khác nhau giữa Mechanize với Poltergeist và Watir là nếu trong ngữ cảnh bạn đang dùng mà không cần thực thi với Javascript thì nên dùng Mechanize

Đăng nhập và viết bài lên tinhte hoặc trang bất kỳ

require 'mechanize'
require 'logger'

module TinhteMechanize
  class TinhtePostback
    def initialize
      tinhte_credential = Preference.find_by provider: 'tinhte'
      @username = tinhte_credential.user_name
      @password = tinhte_credential.password
    end

    def postback(value, thread)
      # đăng nhập
      @agent = Mechanize.new
      mechanize_logger = Logger.new('log/mechanize.log')
      mechanize_logger.level = Logger::INFO
      @agent.log = mechanize_logger

      login_page = @agent.get("https://tinhte.vn/login")
      login_form = login_page.form_with(id: 'pageLogin')

      email_field = login_form.field_with(name: "login")
      password_field = login_form.field_with(name: "password")

      email_field.value =  @username
      password_field.value = @password
      remember_field = login_form.checkbox_with(name: "remember").check

      home_page = login_form.submit
      # kết thúc đăng nhập

      # đăng bài viết
      page = @agent.get(thread)
      postback_form = page.form_with(id: 'QuickReply')
      message_field = postback_form.field_with(name: "message")
      message_field.value = value
      button = postback_form.button_with(value: "Trả lời")
      @agent.submit(postback_form, button)
    end
  end
end
  • Bài viết chắc sẽ có nhiều thiếu sót và sẽ rất vui nhận được phản hồi từ mọi người

hoasung01 15-09-2016

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

hoasung01

5 bài viết.
0 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
3 5
Hoàn cảnh sáng tác :) TIL này mình viết tiếp từ cảm hứng bài (Link) Mình cũng thường rất hay xem phim ở lotte và cũng phải công nhận đây là một t...
hoasung01 viết gần 2 năm trước
3 5
White
2 0
Hướng dẫn deloy lên specific heroku app từ specific branch Mình viết bài này dựa vào một use case thực tế khi làm việc như thế này: Anh A đang ...
hoasung01 viết hơn 1 năm trước
2 0
White
1 0
how to fix upload with same file twice but change event not trigger module.importCSVStaff = function() { $("jformimportstaff .jfile").change(f...
hoasung01 viết 1 năm trước
1 0
Bài viết liên quan
White
0 2
fCC: Technical Documentation Page note So I have finished the HTML part of this exercise and I want to come here to lament about the lengthy HTML ...
HungHayHo viết 29 ngày trước
0 2
White
19 1
Toán tử XOR có tính chất: + A XOR A = 0 + 0 XOR A = A Với tính chất này, có thể cài đặt bài toán sau với độ phức tạp O(N) về runtime, và với O(1)...
kiennt viết gần 2 năm trước
19 1
White
1 1
Chào mọi người, hôm nay mình viết một bài TIL nhỏ về cách lấy độ phân giải của màn hình hiện tại đang sử dụng. xdpyinfo | grep dimensions Kết quả...
namtx viết 12 tháng trước
1 1
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
5 bài viết.
0 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!