Hỏi về Curl để làm site auto

Discussion in 'Linux - PHP - Python - C# - Java' started by Nai, Aug 8, 2017.

Tags:
  1. Nam

    Nam Sơ Nhập Giang Hồ

    CURL là một hàm hay trong PHP. Hàm này giúp ta đọc nội dung một trang web khác ngay trên Server của chúng ta.

    Quy trình:

    //Lấy thông tin
    $dau_vao = CURL / file_get_contents 1 url nào đó. Ra toàn mã HTML

    //xử lý thông tin
    Dùng simplehtmldom hoặc pregex_match/pregex_match_all (để bóc tách lấy tiêu đề, nội dung, tác giả, thời gian, chuyên mục các kiểu)
    cho ra
    $thong_tin = array(
    'tieude' => 'Cháu lên ba'
    'noidung' => 'cháu đi mẫu giáo'
    'tacgia' => 'không rõ'
    'thoigian' => '199x'
    'chuyenmuc'=>'thiếu nhi'
    );

    // Lưu lại vào mysql, mongodb, hoặc đơn giản là ghi thẳng file xuống bằng file_put_contents

    Cách 2: Không lưu DB

    - Khách request tới 1 URL gì đấy. Ở web bác xử lý ngầm, lấy dữ liệu 1 chỗ khác.
    Cũng phải lấy thông tin => bóc tách, rồi hiển thị lên.
    Làm vậy sợ ram + CPU đuối :D nếu cùng 1 nội dung mà cứ liên tục lấy đi lấy lại hoài
    Nên thường phải lưu = cơ sở dữ liệu, hoặc lưu xuống file (cached)


    Và tất cả cần phải học :D

    Em chỉ biết nhiu đó nên chia sẻ nhiêu đó :D
     
    Nai likes this.
  2. Sói

    Sói Administrator Staff Member

    Không có ai bóc tách data bằng strpos với substr như mềnh nhỉ {byebye}
    Tóm lại là pé @Nai chẳng có tí căn bản mie gì về lập trình, tư duy lập trình cũng không có. Ca này khó :D Tốt nhất là nên bỏ 1-2 tháng đăng ký học 1 lớp lập trình là sẽ làm được đủ trò.
     
  3. console

    console Bang Chúng

    Ca này khó lắm, chia sẻ bảo học đi có khi kêu mình không chia sẻ. Hỏi lần quần thì cũng không hiểu được {big_smile}
     
  4. Nai

    Nai MiddleMan Staff Member

    Đây là tất cả những cái mà em cần đây bác.
     
  5. Nai

    Nai MiddleMan Staff Member

    Admin có mở lớp học tình thương ko ạ
     
  6. Nai

    Nai MiddleMan Staff Member

    Học thì phải biết hướng chứ bác. Giống như câu hỏi của em là học cái gì để làm để ra làm được cái web thì bác bảo học IT đi vậy?
     
  7. Sói

    Sói Administrator Staff Member

    15 năm trước anh cũng đi dạy học :D Nhưng mà "mất dạy" 14 năm nay rồi {brick}{brick}{brick}
    Nói chứ nếu học lập trình thì đến mấy trung tâm như Trường Đại học Khoa học tự nhiên TP.HCM học là khá tốt và rẻ. Còn tỉnh thành khác thì chịu :D

    Nhớ hồi xưa bên đó có dạy về Lập trình cơ bản và Lập trình web với PHP. Chỉ cần 2 lớp đó là dư xài rồi. Khi có tư duy lập trình + kiến thức nền tảng thì cần gì tự học thêm.
     
    Nai likes this.
  8. EDM

    EDM Sơ Nhập Giang Hồ

    Có em nè anh {big_smile}, gặp mấy cái bóc tách khó thì lên Stack Overflow là có hết {haha}
     
  9. Sói

    Sói Administrator Staff Member

    Thật ra anh ko biết xài regEx nên khoái tự bóc tách thủ công, ít gặp exception :D
     
  10. EDM

    EDM Sơ Nhập Giang Hồ

    Em cũng vậy, sẵn tiện share trang test regex https://regex101.com/
     
    Nai, Sói and Hoa Mãn Lâu like this.
  11. Hoa Mãn Lâu

    Hoa Mãn Lâu Trưởng Môn

    Mình củng hay xài trang nầy http://regexr.com/v1/ bên phải nó có các ví dụ và diễn giải rất là hữu ích
     
    Sói likes this.
  12. nguagovt

    nguagovt Sơ Nhập Giang Hồ

    Ví dụ 1 site truyện curl từ blogtruyen đây. Đơn giản thôi. nhưng thấy làm kiểu này giờ khó lên vãi. Mặc dù load cũng ok.
    Demo: http://truyengo.com/
    Download ATT :D
     
    Dung Le, HuTaNaTu, Cafe Vu and 2 others like this.
  13. Nai

    Nai MiddleMan Staff Member

    Thank cụ nhé. Bữa cụ gửi em code truyện với tophbo luôn rồi. :D
     
  14. Tường Vy

    Tường Vy Tân Thủ Thôn

    Theo mình hiểu và từng crawl vui 1 số trang phim và DJ thì như này:
    - Dùng curl để lấy source từ 1 url (hiểu đơn giản là bạn vào url đó và ctrl + u là sẽ thấy tất cả những gì mình lấy đc từ curl)
    - Từ đống bèo nhèo source đó sẽ có những thông tin mình cần lấy ra (như site truyện thì là tên, tác giả, nội dung...) mình có thể dùng DOM hoặc regex để bóc tách. (Bóc tách sao thì phải học thôi ạ)
    - Dữ liệu bóc tách được thì như các bro bên trên đã nói. 1 là lưu vào database, 2 là lưu vào file, 3 là query trực tiếp khi visitor truy cập
    Còn các cách bóc tách cao siêu nữa thì e chưa được lĩnh ngộ ạ !
    Mấy thứ trên e làm đều là code PHP nhé.
     
    Nai likes this.
  15. TNA90

    TNA90 Sơ Nhập Giang Hồ

    Như mình làm thì:
    1. Curl hoặc file_get_contents để lấy html source
    2. Phân tích source đó xem phần nào cần lấy sau đó dùng preg_match_all để lọc.
    Tùy trường hợp mà có thể phải dùng thêm nhiều lệnh khác nữa. Nhưng mà nói chung chủ yếu là Curl và preg_match_all
    3. Lưu thông tin vào database sql.
    Cái này đỡ ngốn tài nguyên nhất, lại load nhanh.Nhưng mà có nhược điểm là khi content có nội dung chết (hình ảnh, video) thì mình không cập nhật được. Có thể cho thêm hàm rand(), kiểu cho rand(1,1000), nếu ra 10 thì lại curl làm mới data. Tức là page đó cứ trung bình 1000 lượt view thì sẽ đc update 1 lần.
    4. Sau khi có database rồi thì build site theo hướng mình muốn.
     
    Nam and Nai like this.
  16. Nai

    Nai MiddleMan Staff Member

    Chi tiết quá bác ạ :D thank so much
    {loveyou}
     
  17. tuanitpro

    tuanitpro Tân Thủ Thôn

    Đi thuê cũng là một giải pháp tốt nhé bro. :v
     
    Nai likes this.
  18. Phan Thị

    Phan Thị Bang Chúng

    Nói chung theo cái này cũng cần ít căn bản. Không biết gì thì hỏi mới dễ
     
    Nai likes this.
  19. fixbug

    fixbug Moderator Staff Member

    php curl + dom/regex
    python requests + beautiful soup hoặc scrapy
     
    Nai likes this.
  20. cudem199

    cudem199 Tân Thủ Thôn

    tạo site mà không cần database ak ? thú vị nhỉ