Hướng dẫn bóc tách website bằng php năm 2024

Bạn muốn get dữ liệu từ một trang web khác, copy nội dung, hình ảnh, thậm chí là cấu trúc của một trang web khác và đưa vào cơ sở dữ liệu trang web mình, hoặc đơn giản là show dữ liệu của ra trang web ra với một cấu trúc mới, thiết kế mới của trang web của chính các bạn! Hôm nay, Trung Trịnh .Com sẽ giới thiệu đến với các bạn một thư viện PHP hỗ trợ việc đó. Và thư viện mình giới thiệu hôm nay đó là thư viện PHP Simple HTML DOM Parser

PHP Simple HTML DOM Parser là một thư viện của PHP giúp chúng ta có thể lấy các thuộc tính của các thẻ HTML trong 1 website rất dễ dàng. Thư viện này có những ưu điểm vượt trội như sau:

- Hỗ trợ bóc tách dữ liệu theo từng id, class hoặc thẻ img, a, table, ... - Code ngắn dễ học, dễ viết, dễ nhớ ... - Khá nhẹ nhàng

Để sử dụng thư viện này, các bạn có thể tải về phiên bản mới nhất tại địa chỉ http://simplehtmldom.sourceforge.net/ hoặc link dự phòng do trungtrinh.com lưu trữ: tải php simple html dom parser

Sau khi có thư viện các bạn copy file simple_html_dom.php vào dự án của mình và include file đó vào file bạn muốn lấy dữ liệu để sử dụng. Các khác bạn có thể cài đặt nó thông qua composer. Sử dụng Thư viện này rất dễ sử dụng. Mình tìm hiểu qua một số tính năng của thư viện.

Đọc nội dung của một file:

$html = file_get_html('link trang gốc'); echo $html;

Hiển thị tất cả các ảnh của trang gốc:

$html = file_get_html('link trang gốc'); foreach($html->find('img') as $element) {

   echo '<img src="'.$element->src.'" /><br>';  
}

Lấy nội dung từ một id cụ thể

$html = file_get_html('link trang gốc'); $noidung = $html->find('

ten_id',0);

Số 0 vào đằng sau là để lấy ra nội dung đầu tiên trong id của mảng. Các trường hợp lấy theo class, table, p ... cũng lấy tương tự.

Trên đây là ví dụ cơ bản. Thư viện có thể dùng để áp dụng cho một website get dữ liệu và phát triển nghiệm túc, các bạn cần phải tìm hiểu thêm, ở đây là hướng dẫn cụ thể: http://simplehtmldom.sourceforge.net/manual.htm

Bạn đang xem bài viết tại chuyên mục PHP / MYSQL / MYSQLi của Website Trung Trịnh. Nếu thấy bổ ích, hãy bấm like và share để chia sẻ cho mọi người cùng xem nhé!

Bài toán này dễ gặp nhất khi chúng ta thực hiện việc bóc tách dữ liệu từ các website khác. Kĩ thuật tuy không khó nhưng không phải ai cũng biết . Trong bài viết này chúng ta sẽ nghiên cứu xem làm thế nào để lấy dữ liệu giữa các tag.

Phương pháp lấy nội dung từ tag Bằng cách sử dụng một trong hai hàm preg_match() hoặc preg_match_all(), chúng ta có thể thực hiện dễ dàng:

CODE

` <?php

/

  • @get text between tags
  • @param string (The string with tags)
  • @param string $tagname (the name of the tag
  • @return string (Text between tags)
  • / function getTextBetweenTags($string, $tagname) { $pattern = "/<$tagname>(.?)</$tagname>/"; preg_match($pattern, $string, $matches); return $matches[1]; } ?> `

Cách này khá đơn giản và dễ dùng tuy nhiên tốc độ tìm kiếm và code lập trình của bạn sẽ nhiều hơn và ít sáng sủa hơn. Chúng ta hãy cùng xem thử một cách khác: sử dụng DOM function.

CODE

` <?php

/

  • @get text between tags
  • @param string $tag The tag name
  • @param string $html The XML or XHTML string
  • @param int $strict Whether to use strict mode
  • @return array
  • / function getTextBetweenTags($tag, $html, $strict=0) { / a new dom object /

    $dom = new domDocument;

    /
    load the html into the object /

    if($strict==1) { $dom->loadXML($html); } else { $dom->loadHTML($html); }

    /
    discard white space /

    $dom->preserveWhiteSpace = false;

    /
    the tag by its tag name /

    $content = $dom->getElementsByTagname($tag);

    /
    the array to return / $out = array(); foreach ($content as $item) { / add node value to the out array / $out[] = $item->nodeValue; } / return the results */

    return $out; } ?> `

    Trong đó các giá trị:

    $tag :Tag để tìm $html: nguồn HTML hoặc XML để tìm kiếm. $strict: cho biết load HTML hay XML. Trong hàm trên chúng ta mặc định load HTML.

    Hãy so sánh cách sử dụng để biết cách làm nào tiện dụng và sáng sủa hơn. Sử dụng cách 1:

CODE

` <?php

$html = '<body> <h1>Heading</h1> <a href="http://nhanweb.com">NHANWEB.COM</a> <p>paragraph here</p> <p>Paragraph with a <a href="http://nhanweb.com">LINK TO NHANWEB</a></p> <p>This is a broken paragraph </body>';

$content = getTextBetweenTags('a', $html);

foreach( $content as $item ) { echo $item.'<br />'; } ?> `

Sử dụng cách 2

CODE

` <?php

$xhtml = '<html> <body> <para>This is a paragraph</para> <para>This is another paragraph</para> </body> </html>';

$content2 = getTextBetweenTags('para', $xhtml, 1); foreach( $content2 as $item ) { echo $item.'<br />'; }?>

`

Do các kĩ thuật này không giành cho các bạn mới làm quen với PHP (vì các bạn mới làm quen với PHP chắc ít đụng tới việc bóc tách dữ liệu). Cho nên, mình không giải thích nhiều về 2 cái này nữa. Bạn nào hỏi thì mình cố gắng trả lời trong tầm hiểu biết hạn hẹp của mình thôi hen

Thêm vào trang Google +

Số lần xem : 8244

Đánh giá

Hướng dẫn bóc tách website bằng php năm 2024
Hướng dẫn bóc tách website bằng php năm 2024
Hướng dẫn bóc tách website bằng php năm 2024