Thực ra cũng dễ thôi, chả có gì bí ẩn cả
trước tiên mình sẽ đưa cho các bạn 2 hàm dùng để lấy nội dung bằng curl, với 2 hàm này bạn có thể thoải mái dùng mà không cần chỉnh sửa nhiều
hàm get ảnh:
function img($url){
$curl = curl_init($url);
curl_setopt ($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($curl, CURLOPT_BINARYTRANSFER, 1);
$data= curl_exec ($curl);
curl_close ($curl);
return $data;
}
hàm get html:
function grab($url){
$curl = curl_init();
curl_setopt ($curl, CURLOPT_URL, $url);
curl_setopt 0;;
curl_setopt ($curl, CURLOPT_RETURNTRANSFER, 1);
$data= curl_exec ($curl);
curl_close ($curl);
return $data;
}
giờ ta đã có 2 hàm quan trọng rồi, bây giờ việc cần làm là áp dụng nó để phục vụ ae ta
đối với hàm get ảnh bạn dùng như sau:
//khai báo hàm đãfunction img($url){$curl = curl_init($url);curl_setopt ($curl, CURLOPT_RETURNTRANSFER, 1);curl_setopt ($curl, CURLOPT_BINARYTRANSFER, 1);$data= curl_exec ($curl);curl_close ($curl);return $data;}//nếu bạn muốn leech 1 bức ảnh nào đó để xem luônheader 0;//lệnh header báo cho trình duyệt sẽ nhận ảnh với định dạng jpeg$buc_anh = img ('link ảnh');print ($buc_anh);
//khai báo hàm đãfunction img($url){$curl = curl_init($url);curl_setopt ($curl, CURLOPT_RETURNTRANSFER, 1);curl_setopt ($curl, CURLOPT_BINARYTRANSFER, 1);$data= curl_exec ($curl);curl_close ($curl);return $data;}//nếu bạn muốn leech và lưu vào thư mục nào đó, chẳng hạn images$url = 'link ảnh';$buc_anh = img (url);@mkdir('images',0777);$op = fopen 'images,'wb');//mở một file với tên của bức ảnh trong thư mục imagesfwrite ($op,$buc_anh);//chép nội dung bức ảnh vào file được mở ở trênfclose ($buc_anh);// đóng file lạiecho '<img src="images/' . basename ($url) . '">';//xuất bức ảnh để xem
đến lượt thằng kia
thằng này đơn giản là nó lấy về source html của wap/web
thôi nói nhanh cho nó vuông là
//khai báo hàm đãfunction grab($url){$curl = curl_init();curl_setopt ($curl, CURLOPT_URL, $url);curl_setopt 0;;curl_setopt ($curl, CURLOPT_RETURNTRANSFER, 1);$data= curl_exec ($curl);curl_close ($curl);return $data;}$link = 'link trang muốn xem';$html = $grab ($link);//thích xem không? có à, đây nèecho $html;
điều khác nhau cơ bản của 2 hàm trên là lệnh
curl_setopt ($curl, CURLOPT_BINARYTRANSFER, 1);
lệnh này thông báo cho curl biết rằng dữ liệu lấy về là binary, dễ hiểu là nó không phải dạng text, dạng text là những thứ như txt, css, html, xml, xhtml .....
ok, chỉ cần biết thế thôi, nói nữa lại lù tù mù mất
bây giờ mình sẽ lấy 1 tool mình viết sẵn ra để phân tích cho anh em nhá , đây là tool leech của kenh14.vn chuyên mục góc trái tim(cái này mới làm có người hỏi nên nói luôn);
dĩ nhiên là vẫn có 2 hàm trên nhé, sau đây mình thêm một số hàm cần thiết cho việc xử lý nội dung, mình sẻ cố gắng nói kĩ từng hàm cho ae
khi xem 1 link bài viết chẳng hạn
http://kenh14.vn/goc-trai-tim/vi-em-nhu-the-day-201354215645186.chn
mình view source nó lên và xem xét thấy có cái này
<h2 class="sapo">Vì em không dịu dàng, nữ tính nên ở bên em, anh không có được cảm giác che chở cho người mình yêu thương..</h2>
nó là câu nhấn màu đậm trên bài viết ấy, nó là một phần của bài viết nên mình sẽ tách câu ấy ra bằng hàm sau
$link = 'http://kenh14.vn/goc-trai-tim/vi-em-nhu-the-day-201354215645186.chn';$data = grab ($link);//hàm lấy câu nhấn trên một bài viếtfunction get_h2 ($data){//biến $data là biến nguồn đưa vào có được bằng cách dùng hàm grab nhu trên//trong biến này là mã html của trang ấypreg_match_all0</h2>#is',$data,$h2);// đây là câu regex thuần thúy//ý nghĩa: tìm trong biến $data tất cả những cụm từ nằm giữa <h2\sclass=\"sapo\"> và</h2>//rồi lưu vào biến $h2//lúc này $h2 nó là một biến mảng 2 chiều với giá trị mình cần lấy nằm ở mảng $h2[1"> phần tử có//khóa là 0 tức là chuỗi nhấn nằm trong biến $h2[1">[0">//mình trả lại giá trị chuỗi vào hàm để tí còn lấy <div align="center"><img id ="VP" src="http://wap-m9x.rhcloud.com/images/smileys/simply/).jpg" title="Hướng Dẫn Grab + Làm Tool Leech Bằng CURL" alt="Hướng Dẫn Grab + Làm Tool Leech Bằng CURL" /><br/><a href="http://wap-m9x.rhcloud.com/images/smileys/simply/).jpg" title="Tải ảnh gốc">Tải ảnh gốc</a></div>return($h2[1">[0">);}}
xong, phù, mình viết văn kém nên mong ae ráng vậy
// đây là hàm lấy nội dung chính bài viết
//vẫn giống trên thôi mình tìm được nội dung nó nằm trong đoạn từ
//đến
Tags:
Johncms