------
Phần 75. Lấy
tin từ dantri.com.vn
Đây là clip số 73_1:
Lấy đoạn mã HTML của một tin trên trang dantri.com.vn, dán
vào phần TEST STRING của https://regex101.com/
để xây dựng biểu thức chính quy.
Dưới đây là mã HTML của một tin,
<div data-boxtype="timelineposition"
data-posid="635581" data-locked="false" class="mt3
clearfix eplcheck"><a
href="/giao-duc-khuyen-hoc/cam-dong-cac-thay-co-giao-nhieu-nam-tinh-nguyen-nau-chao-sang-cho-hoc-sinh-20171117073740343.htm"
title="Cảm động các thầy cô giáo nhiều năm tình nguyện nấu cháo sáng
cho học sinh"><img title="Cảm động các thầy cô giáo nhiều
năm tình nguyện nấu cháo sáng cho học sinh" alt="Cảm động các
thầy cô giáo nhiều năm tình nguyện nấu cháo sáng cho học sinh" data-x2="https://dantricdn.com/zoom/130_100/2017/img9122-1510844369131.jpg"
src="https://dantricdn.com/zoom/130_100/2017/img9122-1510844369131.jpg"
width="130" height="100"
class="img130"></a><div class="mr1"
data-id="20171117073740343"><h2><a href="/giao-duc-khuyen-hoc/cam-dong-cac-thay-co-giao-nhieu-nam-tinh-nguyen-nau-chao-sang-cho-hoc-sinh-20171117073740343.htm"
title="Cảm động các thầy cô giáo nhiều năm tình nguyện nấu cháo sáng
cho học sinh" class="fon6" data-newstype="0"
data-linktype="newsdetail" data-id="20171117073740343">Cảm
động các thầy cô giáo nhiều năm tình nguyện nấu cháo sáng cho học
sinh</a></h2><div class="fon5 wid324 fl">(Dân trí)
- Nhiều năm qua, các thầy cô giáo Trường Phổ thông dân tộc bán trú Trung
học cơ sở (THCS) Trung Thượng, xã Trung Thượng, huyện Quan Sơn (Thanh Hóa)
thức khuya, dậy sớm tình nguyện nấu cháo ăn sáng cho các em học sinh
bán trú của nhà trường.<br><a
href="/giao-duc-khuyen-hoc/giao-vien-lay-tien-luong-mua-gao-cho-hoc-sinh-an-2017012507454859.htm"
title="Giáo viên lấy tiền lương mua gạo cho học sinh
ăn"><b> >> Giáo viên lấy tiền
lương mua gạo cho học sinh ăn</b></a></div><a
rel="nofollow" class="icon-detail fon7"
href="/giao-duc-khuyen-hoc/cam-dong-cac-thay-co-giao-nhieu-nam-tinh-nguyen-nau-chao-sang-cho-hoc-sinh-20171117073740343.htm">Xem
tiếp</a> </div></div>
Tìm được biểu thức chính quy để lấy hình ảnh, tiêu đề và mô
tả của các tin trong danh sách:
'/class="mt3 clearfix
eplcheck">.*src="(.*)".*class="fon6".*>(.*)<.*fon5
wid324 fl">.*(.*)</ismU'
Đây là clip số 73_2:
Biểu thức chính quy để lấy tin đầu tiên (tin này có cấu trúc
khác so với các tin trong danh sách):
'/class="mt3 clearfix".*src="(.*)".*"fon44".*>(.*)<.*"fon5
wid255 fl">(.*)</ismU'
Lưu lại đoạn mã để tham khảo:
<!DOCTYPE html>
<html lang="en">
<head>
<meta
charset="UTF-8">
<title>Document</title>
</head>
<body>
<?php
$data =
file_get_contents('http://dantri.com.vn/giao-duc-khuyen-hoc.htm') or die('Không
đọc được dữ liệu');
$pattern =
'/class="mt3 clearfix
eplcheck">.*src="(.*)".*class="fon6".*>(.*)<.*fon5
wid324 fl">.*(.*)</ismU';
preg_match_all($pattern,
$data, $matches);
$result = array();
foreach($matches[1] as
$key => $value ) {
$result[$key]['image']
= $matches[1][$key];
$result[$key]['title']
= $matches[2][$key];
$result[$key]['description'] = $matches[3][$key];
}
// lấy mẩu tin đầu tiên
$pattern =
'/class="mt3 clearfix".*src="(.*)".*"fon44".*>(.*)<.*"fon5
wid255 fl">(.*)</ismU';
preg_match($pattern,
$data, $matches);
$top['image'] =
$matches[1];
$top['title'] =
$matches[2];
$top['description'] =
$matches[3];
// gắn $top vào đầu chuỗi
$result
array_unshift($result,
$top);
?>
<div
class="container">
<?php
foreach ($result as $key
=> $value) {
?>
<div
class="news">
<img
src="<?php echo $value['image']; ?>" alt="">
<h3><a
href="<?php echo $value['link']; ?>"><?php echo
$value['title']; ?></a></h3>
<p><?php echo
$value['description']; ?></p>
</div>
<?php
}
?>
</div>
</body>
</html>
-----------
Cập nhật [16/9/2020]
-----------