Các bro cho em hỏi một chút với ạ: + Em đang crawler bằng php simple DOM có nhiều trang load img bằng js không lấy được ảnh hoặc load được image nhưng k get được. Mong ae cho xin cách khắc phục hoặc giải pháp khác hay hơn với ạ. Em cảm ơn nhiều
đây bác : http:// truyentranhtuan.com/van-gioi-tien-tung-chuong-355/ hoặc https:// truyendep.com/nguyen-ton-chap-310/ Em đang crawler ở local, tiện a cho e hỏi luôn nơi lưu ảnh nào hợp lý nhất ạ, e chưa có giải pháp
Hàng đây: PHP: <?phpfunction curl_request($url, $options = false, $cache_key = false){ if($cache_key && file_exists('cache/'.$cache_key.'.txt')) return file_get_contents('cache/'.$cache_key.'.txt'); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); if(isset($options->user_agent)) { $user_agent = $options->user_agent; } else $user_agent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:82.0) Gecko/20100101 Firefox/82.0'; curl_setopt($ch, CURLOPT_USERAGENT, $user_agent); if(!empty($options->headers) && is_array($options->headers)) curl_setopt($ch, CURLOPT_HTTPHEADER, $options->headers); if(!empty($options->referrer)) curl_setopt($ch, CURLOPT_REFERER, $options->referrer); if(!empty($options->post_data)) { curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $options->post_data); } curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); $result = curl_exec($ch); curl_close($ch); if($cache_key) file_put_contents('cache/'.$cache_key.'.txt', $result); return $result;}$page_url = 'http://truyentranhtuan.com/van-gioi-tien-tung-chuong-355/';$html = curl_request($page_url);// echo $html; exit();$json = preg_match('/var slides_page_path = (?<json>[^;]+);/', $html, $matched) ? $matched['json'] : '';// echo $json; exit();$array_images = json_decode($json);// print_r($array_images); exit();foreach($array_images as $index_image => $image_url){ echo $image_url."\n"; $arr = explode('/', $image_url); $image_filename = end($arr); file_put_contents($image_filename, curl_request($image_url));}exit('--- DONE ---'); Video múa phím...... trong video có 1 đoạn code thừa download hình 2 lần....mình đã xóa rồi.
A cho e hỏi thêm một chút ạ, e dùng command của laravel để crawl tốc độ rất chậm, a có biết giải pháp nào nhanh hơn k ạ
Để viết hẳn hoi 1 con crawler thì cần làm nhiều thứ như: database, check duplicated, mapping category.......... Lưu ý mấy công việc crawl này nó thường nặng vì sử lý một lúc cả tá url, images, pages..... nên viết riêng dưới dạng 1 tool và chạy thông qua commandline.... không nên viết dạng web tool vì webserver giới hạn timeout cũng như php sẽ bị giới hạn bởi time_execute.
Thím có thể dùng kết hợp laravel queue + supervisor để crawl nhiều pages cùng 1 lúc p/s: Thím crawl ở local mà chậm thì check lại mạng nhà thím thử coi, không thì thử upload source lên 1 con vps rồi crawl nhớ kiểm tra lúc chạy command thì cpu, ram có bị overload ko, nếu có thì check lại code để optimize nó
PHP k crawl đc ajax vậy đâu , trừ khi nó có request theo method GET , bác học python code mấy dòng cho nhanh
Hướng dẫn chi tiết quá với 1 site cụ thể, mình thấy ko nên. Vô tình chủ site đó vào đây thì ko hay lắm. Lúc đó chủ site lại thay đổi layout thì mệt. Hãy pm riêng thì hay hơn bạn à. Chỉ nên nói đại ý để bạn đó tìm hiểu. Bạn chủ topic phải học và tự đào sâu. Kiến thức sẽ chắc. Còn chi tiết làm thì để bạn chủ topic thuê đi. Hoặc donate cho thì đẹp.
TÀO LAO!!! Mấy bạn trẻ này bị phụ thuộc quá rồi. Mấy cái này chưa cần đến dao mổ trâu đâu. --- Double Post Merged, May 16, 2021, Original Post Date: May 16, 2021 --- Ajax thì cũng chỉ là request thôi. Biết bật dev tool là thấy rồi. Chỉ get về rồi parse như ví dụ trước thôi. Còn bận kiếm tiền quá thì nên như bác @xmenvn2510 nói.
Tất nhiên fake request như bác nói thì vẫn get đc , nhưng sao phải khổ dâm vậy ạ . Trong khi code python dễ ( tụi con nít toàn học nó ) chứ có phải khó đâu .