Hướng dẫn grab a-z

Admin

AdminAdmin is verified member.

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:
Code:
<?php
include 'class.grab.php';
$bt = new BTGrab();
?>
*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.
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;
?>
*$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
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;
?>
*$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,..
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;
?>
*$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.
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;
?>
*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.
 

Facebook Comments

Similar threads

Admin
Replies
2
Views
2K
AdminAdmin is verified member.
Admin
cuongpro9x
Replies
1
Views
13K
choa37
C
P
Replies
0
Views
3K
princenuce
P
Back
Top