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 &
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.
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ụ
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.
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
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ứ
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.
@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.
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
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
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
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
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