AdvanceDeveloperFeaturedNewbiePHPProgramming Language

เทคนิคการดึงข้อมูลใน HTML สำหรับทำข้อมูล Demo ด้วย phpQuery

บางครั้งตอนที่เราเริ่มทำ Website ใหม่ๆ ในเซิร์ฟเวอร์เทสเราจะใช้ CMS ที่พัฒนามาเองลงข้อมูลแต่ถ้าบางทีข้อมูลมันมากไปก็ลำบากเมื่อมือ ลองใช้ phpQuery ช่วยครับ

เป็น Library ที่น่าสนใจอีกตัวจริงๆ มีเวอร์ชัน jQuery และ Java ด้วยแต่เบื้องต้นเอาเจ้านี่มาให้ลองเล่นดูก่อน ตัวที่ทดสอบนั้นผมใช้ phpQuery แบบ One File ครับ นั่นคือเวอร์ชัน ใช้ ไฟล์เดียวในการเรียกคำสั่ง โดยการไปดาวน์โหลดที่นี่

Screen Shot 2557-07-29 at 5.22.07 PM
ดาวน์โหลดตัว onefile.zip มาใช้ครับ

https://code.google.com/p/phpquery/downloads/list

แตก Zip ไฟล์ออกมาจะได้ไฟล์หนึ่งทำการ Rename เป็น phpquery.php
วิธีใช้ก็คือ สร้าง Virtual Directory ขึ้นมาก่อนแล้วก็สร้างไฟล์ index.php ของเราขึ้นมา ตัวอย่างของผมคือ ผมจะเก็บข้อมูลหนังจากเว็บไซต์ Siamzone.com เป็นตัวอย่างแล้วกันโดยหน้าที่ต้องการดึงข้อมูลคือ หน้านี้
http://www.siamzone.com/movie/m/7115

การทำงานของ phpQuery จะเหมือน DOM ครับคือ ไต่ไปตาม Attrbute ของ Tag HTML อีกทีเพื่อไปเอาค่ามา ดังนั้นตัวอย่างนี้ผมจะเอาค่า ชื่อหนัง และ คำอธิบายมาใช้ก่อน ซึ่งต้องใช้ Inspector Chrome มาช่วย หรือจะ View source เอาก็ได้ถ้าแม่นจริงๆนะครับ

Screen Shot 2557-07-29 at 5.27.55 PM

คำอธิบายจะดูได้จากตัวอย่างข้างล่าง นั่นคือ Div ที่มี id ว่า “thai_synopsis” ส่วนชื่อหนังผมะดึงจาก Title Tag ของหน้าเพจ URL นี้จากตัวอย่างที่ว่ามาเขียนคำสั่งนี้ครับ

<?php
require ('phpquery.php');

$file = 'http://www.siamzone.com/movie/m/7115'; 
phpQuery::newDocumentFileHTML($file);

$titleElement = pq('title');
$container = pq('#thai_synopsis');
echo $sp=strip_tags($container);

?>

ลอง รันดูผลลัพธ์จะได้แบบนี้

Screen Shot 2557-07-29 at 5.35.16 PM
ผลลัพธ์

มาสร้าง MySQL Database กันหน่อยดีกว่า ผมสร้างตารางที่ชื่อว่า movies ขึ้นมา สร้าง Columns ขึ้นมา 2 ช่องคือ title และ description ตามคำสั่งนี้ก็ได้

CREATE TABLE IF NOT EXISTS `theatre` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) COLLATE utf8_bin NOT NULL,
  `description` text COLLATE utf8_bin,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1 ;

หลังจากนั้นก็ไปสร้างคำสั่งเชื่อมต่อ MySQL แล้วทำการ Insert ค่าลงในฐานข้อมูลครับ

$objectconnect = mysql_connect("localhost","root","") or die("Error Connect to Database");
$objectdatabase = mysql_select_db("movies");
mysql_query("SET CHARACTER SET UTF8 ");
$sql = "INSERT INTO theatre ";
$sql .="(title,description) ";
$sql .="VALUES ";
$sql .="('".$title."','".$sp."') ";
$query = mysql_query($sql);
if($query)
{
	echo "SUCCESS ".$sql."";
}
mysql_close($objectconnect);

คำสั่งโดยภาพรวมหน้า index.php ก็จะประกอบด้วย

<?php
require ('phpquery.php');

$file = 'http://www.siamzone.com/movie/m/7115'; 
phpQuery::newDocumentFileHTML($file);

$titleElement = pq('title');
$container = pq('#thai_synopsis');
echo $sp=strip_tags($container);

$title = $titleElement->html();

$objectconnect = mysql_connect("localhost","root","") or die("Error Connect to Database");
$objectdatabase = mysql_select_db("movies");
mysql_query("SET CHARACTER SET UTF8 ");
$sql = "INSERT INTO theatre ";
$sql .="(title,description) ";
$sql .="VALUES ";
$sql .="('".$title."','".$sp."') ";
$query = mysql_query($sql);
if($query)
{
	echo "SUCCESS ".$sql."";
}
mysql_close($objectconnect);
?>
Screen Shot 2557-07-29 at 5.35.23 PM
ใช้กับฐานข้อมูล

ทดสอบอีกครั้ง มีคำว่า SUCCESS

ไปดูที่ MySQL กันหน่อย

Screen Shot 2557-07-29 at 5.19.36 PM

ปรากฏว่ามีข้อมูลแล้วครับ

เรียบร้อย
เรียบร้อย

ตัวอย่างการใช้ phpQuery นี้เหมาะกับ การทดสอบระบบที่จะต้องมี content ปรากฏขึ้นแล้วคนทำ Demo ขี้เกียจจะ Copy บทความครับ ในกรณีที่ลูกค้าอยากดูภาพรวมแบบเต็มๆ แต่ถ้าจะเอาไว้ใช้ ขโมยข้อมูลเว็บมาลงล่ะก็ไม่ควรนะครับ

แบบฝึกหัดของบทเรียนนี้

แนะนำให้ลองไปใช้ phpQuery กับหน้า http://www.google.co.th/movies ดูครับ คุณอาจจะได้เว็บแอพพลิเคชันทำรอบหนังแบบ Realtime ได้เลยตัวหนึ่ง เอาไปใช้กับ Mobile ก็ได้นะ

 

 

 

 

 

Asst. Prof. Banyapon Poolsawas

อาจารย์ประจำสาขาวิชาการออกแบบเชิงโต้ตอบ และการพัฒนาเกม วิทยาลัยครีเอทีฟดีไซน์ & เอ็นเตอร์เทนเมนต์เทคโนโลยี มหาวิทยาลัยธุรกิจบัณฑิตย์ ผู้ก่อตั้ง บริษัท Daydev Co., Ltd, (เดย์เดฟ จำกัด)

Related Articles

Back to top button
Game & Mobile Development AR VR XR
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.

Adblock Detected

เราตรวจพบว่าคุณใช้ Adblock บนบราวเซอร์ของคุณ,กรุณาปิดระบบ Adblock ก่อนเข้าอ่าน Content ของเรานะครับ, ถือว่าช่วยเหลือกัน