
Admin
Well-Known Member
Staff member
Administrator
Grab cũng đơn giản nhưng vẫn có một số bạn chưa biết và có pm hỏi mình. Đang ngồi rảnh với đang học OOP để chuẩn bị code cho 1 dự án nên mình viết 1 class để grab đơn giản hơn.
Đầu tiên các bạn tải classGrab và Demo về để sử dụng. Và 1 thứ không thể thiếu đó là trang wap source html trang cần grab. Các bạn có thể sử dụng trang của mình Xem code HTML có thể xem, tải code html, chia trang, chia ký tự, loại bỏ html, copy,..Xong rồi bắt đầu nha
_ _ _ _
Đầu tiên tạo 1 file để viết code grab đuôi .php và up load file "class.grab.php" lên host, cùng thư mục chứa file để viết grab cho dễ quản lý. Nội dung file để viết code grab có nội dung như sau:
*include 'class.grab.php'; có công dụng gọi file chứa class grab
*$bt = new BTGrab(); để tạo một Obj mới
Xong phần thư viện grab. Mình đi tiếp phần kế. Tiếp theo phần này mình sẽ tìm một trang để grab, mình vừa tìm được 1 trang khá đơn giản cho các bạn mới tìm hiểu dễ grab hơn. Đó là trang wap.bollywoodjalwa.com và mình sẽ chọn phần theme của nó để grab. Nhìn url mục theme nó có dạng:
"wap.bollywoodjalwa.com/home.php?dir=/Themes&p=0&sort=0"
đây là phần chính của nó. Mình sẽ get những method của nó. Nó có 3 method là dir, p và sort.
*$dir = empty($_GET['dir']) ? '/Themes':urlencode($_GET['dir']); mình dùng hàm empty để kiểm tra xem method get được có chứa giá trị hay không. Nếu không nó sẽ đặt giá trị mặc định. Còn hợp lệ thì sửa dụng giá trị get được. Các biến $p và $sort cũng tương tự.
*$bt->GetData(); gọi hàm GetData để lấy nội dụng trang cần grab.
Xong bạn chạy thử xem lấy được nó rồi phải không?
. Nhưng có điều là vẫn còn dính đến nó. Giờ mình sẽ fix từ từ. Sử dụng trang wap Xem code HTML để xem code html file bạn đang grab để có thể dễ chỉnh sửa hơn. Bạn cần loại bỏ từ <!...đến...<div class=updateinfo> ở khúc trên và từ </div><div class=bookmark>...đến...</html> ở khúc dưới phải không?, hi
*$bt->BTReg('tìm chuỗi', 'thay thế vào') để tìm và thay thế chuỗi (preg_replace)
*Mẹo: để gọn và khỏi gọi hàm nhiều lần, các bạn gom các chuỗi cần sử lý của hàm nào rồi dùng hàm array để nó được sử lý khi tìm kiếm hợp lệ.
Tới đây thì đã có thể loại bỏ bớt những thứ không cần thiết rồi đúng không, hi. Nhưng source thì vẫn còn vài thứ cần thay đổi như link gốc vẫn còn, có thẻ div cần thay,..
*$bt->BTRep('chuỗi cần thay', 'chuỗi mới thay vào') hàm thay thế chuỗi (str_replace). Chuỗi cần thay thế bạn nên viết càng sát càng tốt để đảm bảo không ảnh hưởng tới phần khác.
Tới đây thì code đã trở nên hoàn hảo hơn rồi đúng không? hi. Để test vài link xem thử thế nào nha..phần link trang download có dạng "wap.bollywoodjalwa.com/file.php...file=Link File&..." còn link download gốc thì "wap.bollywoodjalwa.com/Link File". Để nhanh chóng mình sửa lại cho nó thành link download trực tiếp nha.
*Dùng $bt->BTReg() để tìm và thay thế chuỗi, biến $1, $2..là giá trị thứ thự tăng dần của (.+?) bên phần tìm chuỗi.
*echo $bt->data; để in kết quả trả về cho trình duyệt.
........
Mình đã dùng cách mô tả đơn giản để các bạn dễ hình dung ra hơn, nếu có gì không hiểu các bạn cứ để lại câu hỏi mình sẽ trả lời giúp.
Các cú pháp trong class BTGrab của mình:
-GetData('link cần grab') grab và trả về nội dung
-BTRep('chuỗi cần thay thế', 'chuỗi thay thế vào') thay thế chuỗi
-BTReg('tìm kiếm chuỗi', 'chuỗi thay thế vào') tìm và thay thế chuỗi
-BTCut('bắt đầu', 'kết thúc') cắt từ bắt đầu đến kết thúc.
Đầu tiên các bạn tải classGrab và Demo về để sử dụng. Và 1 thứ không thể thiếu đó là trang wap source html trang cần grab. Các bạn có thể sử dụng trang của mình Xem code HTML có thể xem, tải code html, chia trang, chia ký tự, loại bỏ html, copy,..Xong rồi bắt đầu nha

_ _ _ _
Đầu tiên tạo 1 file để viết code grab đuôi .php và up load file "class.grab.php" lên host, cùng thư mục chứa file để viết grab cho dễ quản lý. Nội dung file để viết code grab có nội dung như sau:
Code:
<?php
include 'class.grab.php';
$bt = new BTGrab();
?>
*$bt = new BTGrab(); để tạo một Obj mới
Xong phần thư viện grab. Mình đi tiếp phần kế. Tiếp theo phần này mình sẽ tìm một trang để grab, mình vừa tìm được 1 trang khá đơn giản cho các bạn mới tìm hiểu dễ grab hơn. Đó là trang wap.bollywoodjalwa.com và mình sẽ chọn phần theme của nó để grab. Nhìn url mục theme nó có dạng:
"wap.bollywoodjalwa.com/home.php?dir=/Themes&p=0&sort=0"
đây là phần chính của nó. Mình sẽ get những method của nó. Nó có 3 method là dir, p và sort.
Code:
<?php
include 'class.grab.php';
$dir = empty($_GET['dir']) ? '/Themes':urlencode($_GET['dir']);
$p = empty($_GET['p']) ? 0:$_GET['p'];
$sort = empty($_GET['sort']) ? 0:$_GET['sort'];
$bt->GetData('http://wap.bollywoodjalwa.com/home.php?dir='.$dir.'&p='.$p.'&sort='.$sort);
echo $bt->data;
?>
*$bt->GetData(); gọi hàm GetData để lấy nội dụng trang cần grab.
Xong bạn chạy thử xem lấy được nó rồi phải không?

Code:
<?php
include 'class.grab.php';
$dir = empty($_GET['dir']) ? '/Themes':urlencode($_GET['dir']);
$p = empty($_GET['p']) ? 0:$_GET['p'];
$sort = empty($_GET['sort']) ? 0:$_GET['sort'];
$bt->GetData('http://wap.bollywoodjalwa.com/home.php?dir='.$dir.'&p='.$p.'&sort='.$sort);
$bt->BTReg(array('/<!(.+?)<div class=updateinfo>/is', '/<\/div><div class=bookmark>(.+?)<\/html>/is'), '');
echo $bt->data;
?>
*Mẹo: để gọn và khỏi gọi hàm nhiều lần, các bạn gom các chuỗi cần sử lý của hàm nào rồi dùng hàm array để nó được sử lý khi tìm kiếm hợp lệ.
Tới đây thì đã có thể loại bỏ bớt những thứ không cần thiết rồi đúng không, hi. Nhưng source thì vẫn còn vài thứ cần thay đổi như link gốc vẫn còn, có thẻ div cần thay,..
Code:
<?php
include 'class.grab.php';
$dir = empty($_GET['dir']) ? '/Themes':urlencode($_GET['dir']);
$p = empty($_GET['p']) ? 0:$_GET['p'];
$sort = empty($_GET['sort']) ? 0:$_GET['sort'];
$bt->GetData('http://wap.bollywoodjalwa.com/home.php?dir='.$dir.'&p='.$p.'&sort='.$sort);
$bt->BTReg(array('/<!(.+?)<div class=updateinfo>/is', '/<\/div><div class=bookmark>(.+?)<\/html>/is'), '');
$bt->BTRep(array('http://wap.bollywoodjalwa.com/home.php', 'class=even>'), array('', 'class=main>'));
echo $bt->data;
?>
Tới đây thì code đã trở nên hoàn hảo hơn rồi đúng không? hi. Để test vài link xem thử thế nào nha..phần link trang download có dạng "wap.bollywoodjalwa.com/file.php...file=Link File&..." còn link download gốc thì "wap.bollywoodjalwa.com/Link File". Để nhanh chóng mình sửa lại cho nó thành link download trực tiếp nha.
Code:
<?php
include 'class.grab.php';
$dir = empty($_GET['dir']) ? '/Themes':urlencode($_GET['dir']);
$p = empty($_GET['p']) ? 0:$_GET['p'];
$sort = empty($_GET['sort']) ? 0:$_GET['sort'];
$bt->GetData('http://wap.bollywoodjalwa.com/home.php?dir='.$dir.'&p='.$p.'&sort='.$sort);
$bt->BTReg(array('/<!(.+?)<div class=updateinfo>/is', '/<\/div><div class=bookmark>(.+?)<\/html>/is'), '');
$bt->BTRep(array('http://wap.bollywoodjalwa.com/home.php', 'class=even>'), array('', 'class=main>'));
$bt->BTReg('/<a href="http:\/\/wap.bollywoodjalwa.com\/file.php(.+?)file=(.+?)&(.+?)>/i', "<a href=\"http://wap.bollywoodjalwa.com/$2\">");
echo $bt->data;
?>
*echo $bt->data; để in kết quả trả về cho trình duyệt.
........
Mình đã dùng cách mô tả đơn giản để các bạn dễ hình dung ra hơn, nếu có gì không hiểu các bạn cứ để lại câu hỏi mình sẽ trả lời giúp.
Các cú pháp trong class BTGrab của mình:
-GetData('link cần grab') grab và trả về nội dung
-BTRep('chuỗi cần thay thế', 'chuỗi thay thế vào') thay thế chuỗi
-BTReg('tìm kiếm chuỗi', 'chuỗi thay thế vào') tìm và thay thế chuỗi
-BTCut('bắt đầu', 'kết thúc') cắt từ bắt đầu đến kết thúc.