Newbie hỏi kinh nghiệm làm web auto crawl YouTube

Discussion in 'AutoBlog' started by Dang Viet Hieu, Jul 8, 2019.

  1. sincos

    sincos Bang Chúng

    Từ PHP5 trở đi nó hỗ trợ chạy console rất tốt. Chả kém gì Python hay Java cả.

    Mình viết tool xong thường chạy dạng như này:

    nohug php index.php crawl youtube startID 0 instance-0 >> log0.txt 2>&1 &
    nohug php index.php crawl youtube startID 1000 instance-1 >> log1.txt 2>&1 &
    nohug php index.php crawl youtube startID 10000 instance-2 >> log2.txt 2>&1 &
    nohug php index.php crawl youtube startID 100000 instance-3 >> log3.txt 2>&1 &
    nohug php index.php crawl youtube startID 1000000 instance-4 >> log4.txt 2>&1 &
    ............................................................................
    nohug php index.php crawl youtube startID 100000000000 instance-100 >> log100.txt 2>&1 &
     
  2. sincos

    sincos Bang Chúng

    Không hiểu do là primary language hay gì nhưng thấy PHP để code 1 đoạn cào data thường rất ngắn, ko cần thư viện ngoài (chỉ mỗi curl và regex có sẵn) là phang thôi. Số dòng code phải viết cũng ngắn hơn rất nhiều, không phải bắt ngoại lệ tùm lum như Java. Sử dụng mảng đa năng thay vì phân biệt quá rạch ròi như Java collections.

    Về tốc độ rất tiếc chưa có Benchmark cụ thể. Nhưng mình tin rằng nó cũng không quá chênh lệch so với ngôn ngữ khác. Chủ yếu vẫn là tốc độ mạng và database là chính.

    Khi parse bằng regex tốn rất ít tài nguyên so với các dạng DOM hoặc parse khác khác.
     
    Nai and console like this.
  3. console

    console Bang Chúng

    Xài 200 API KEY chấp bot luôn nhé.
     
  4. Nai

    Nai MiddleMan Staff Member

    Cái nohug này có khác gì nohup ko cụ, e search chỉ ra nohup
    Lúc trước em cào data về sẵn rồi mới lên site thì muốn chạy 5 file php thì mỗi file phải tự ngắt list url (của victim) ra rồi mới chạy để tránh cào trùng.
    Còn cái ví dụ cụ đưa thấy có mỗi phải index.php. Cụ giải thích emthêm tí được ko cụ {adore}
     
  5. sincos

    sincos Bang Chúng

    Vãi nohug thì chỉ có 1 thôi sao hỏi lạ vậy. Có thread nói về cái này và thằng screen rồi còn gì.

    Chia range ID ra cũng chỉ là 1 cách. Thông thường trong database có 1 field là crawl_status cắm cờ 1-2-3 cái nào tương ứng với trạng thái new-processing-completed để tránh trùng lặp.

    Vụ câu lệnh thì search biến môi trường args trong PHP thôi. Tui hay dùng Codeigniter thì framework nó hỗ trợ cả chế độ console.

    nohug php index.php crawl youtube startID 0 instance-0 >> log0.txt 2>&1 &

    Tương đương với

    http://domain.com/crawl/youtube/startID/1000

    Ngày xưa chưa biết chạy console toàn phải setup cronjob hoặc dùng dùng trình duyệt để kích hoạt tool. Giờ có thằng console quá nhàn. Y như python hay java.

    Trước viết tool reupload youtube. Mỗi PHP console, ffmpeg...... tự download, tự watermark, nối video, lách bản quyền........ cân hết.
     
    Vito_King and Nai like this.
  6. wpresources

    wpresources Bang Chúng

    Khi parse bằng regex tốn rất ít tài nguyên so với các dạng DOM hoặc parse khác khác.
    =>Cái nào thì nó cũng phải tải tài nguyên trang web về rồi mới phân tích chứ bác,nên tài nguyên cần dùng phải như nhau chứ nhỉ

    Thông thường trong database có 1 field là crawl_status cắm cờ 1-2-3 cái nào tương ứng với trạng thái new-processing-completed để tránh trùng lặp.
    =>Mình ko hiểu sao dùng trạng thái lại có thể tránh trùng dữ liệu được,để tránh trùng thì mình tạo một cột identifier là mã md5 của url
     
  7. console

    console Bang Chúng

    Sao lại giống nhau đc hè. Lấy zề là string regex xài luôn. Còn lại phải thêm 1 cái nữa là chuyển thành Object DOM khác nhau chứ
     
    wpresources likes this.
  8. Hoa Mãn Lâu

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

    Xài 2 status thôi, 1 và 0 dc rồi. True false.
     
  9. sincos

    sincos Bang Chúng

    Phải có thêm 1 status nữa là processing để khi thread khác lấy để crawl thì né thằng đang được sử lý ra. Không thì 2 thằng cùng nấu cơm thì ai ăn cho hết.
     
    Vito_King likes this.
  10. sincos

    sincos Bang Chúng

    @wpresources HTML thì phải load về như nhau, nhưng nếu dùng DOM parse thì load hết vào bộ nhớ dẫn đến cực tốn RAM (crawler phiên bản 1.0 cách đây hơn 10 năm đã từng dùng). Còn regex thì không nhé.

    Vụ cắm cờ không phải tránh trùng lặp dữ liệu, nó chỉ tránh trùng lặp sử lý mà thôi. Ví dụ có 1 triệu URL trong DB cần crawl thì khi tool chạy phải nhặt 1 URL ra để crawl.. trong lúc crawl thì cũng có thread khác đang bốc URL ra.... nếu không cắm cờ thì sẽ có trường hợp 2 thread cùng nhặt 1 URL sử lý ==> lãng phí tài nguyên và mất thời gian.
     
    Vito_King and wpresources like this.
  11. Vito_King

    Vito_King Sơ Nhập Giang Hồ

    Cái này bạn chưa đúng nha, cũng như bạn học thuật toán, cùng xử lý 1 vấn đề có cái nhanh, chậm khác nhau nha
     
  12. grayhatvn

    grayhatvn Bang Chúng

    Nếu dùng api thì 1 key get dc 95 ID / day
    Quocta nó cho 10000/day
    Nếu query theo kiểu search thì quocta đc tính 1 request = 100 đơn vị , ai có giải pháp gì hay ko,
    hiện tại 1 gmail tạo dc 10 prj tương ứng với 1 gmail sẻ dc 1000 ID / day
    [​IMG]
     
  13. wpresources

    wpresources Bang Chúng

    Dùng cách của em đã trả lời trong thread này là ok

    Sau đó để tìm chỉ kênh thì theo cú pháp https://www.youtube.com/results?search_query={keyword}&sp=EgIQAg%253D%253D
     
  14. nguyenvan

    nguyenvan Khách Qua Đường

    Bác nào biết cách tạo sitemap cho site crawl từ youtube ko? Hay là để google tự index ạ? Nếu thế nó lên chậm lắm, em để 5 ngày rồi mới dc có 20 index {beat_brick}
     
  15. xmenvn2510

    xmenvn2510 Moderator + MiddleMan Staff Member

    Nếu bạn lưu vào database thì việc tạo sitemap rất dễ. Có gì pm mình.
     
  16. Thanh Nguyen

    Thanh Nguyen Bang Chúng

    GG giờ index chảnh chó vãi. Site map gần 1M link nó index đc 10k. còn 990k là bị bỏ qua. Thế này thì bảo sao mãi không ngóc đầu lên đc {angry}{angry}{angry}
     
  17. Vito_King

    Vito_King Sơ Nhập Giang Hồ

    Google Webmaster nó báo loại trừ bằng đấy á bac, mà bác tạo sitemap tag hay bài viết
     
  18. Thanh Nguyen

    Thanh Nguyen Bang Chúng

    E tạo cả 2 bác. 70% là lini bài viết. Tag chiếm gần 20% thôi
     
  19. nguyenvan

    nguyenvan Khách Qua Đường

    Em không lưu database chỉ crawl trực tiếp link từ youtube thì làm sao để tạo sitemap đây các bác?
     
  20. Nai

    Nai MiddleMan Staff Member

    Thì tạo sitemap trực tiếp luôn. Hoặc tạo sitemap cho các tag