Công cụ Thông tin chung

Một phần của tài liệu luận văn thạc sỹ xây dựng công cụ hỗ trợ tối ưu hóa website cho các công cụ tìm kiếm (Trang 74 - 100)

4.2.1. Đặt bài toán

Mục tiêu là chỉ hiện ra các thông tin cần thiết ảnh hưởng đến thứ hạng của website. Giúp các webmaster có thể chỉnh sửa website có lợi nhất với công cụ tìm kiếm. Với mục tiêu này, Công cụ thông tin chung đã thực hiện việc chắt lọc những thông tin cần thiết cho các công cụ tìm kiếm như thẻ title, meta title, meta description, meta keyword, thẻ a, thẻ strong, thẻ em, thẻ img, các thẻ heading.

Bên cạnh việc hiện ra các thông tin chung thì còn cho người dùng thấy được những chỉ dẫn cần thiết, nên hay không nên, nhằm hạn chế những sai sót khi tối ưu.

4.2.2. Phƣơng pháp giải quyết

Hiện nay, các công cụ hỗ trợ SEO hầu hết sử dụng phương pháp tìm chuỗi trong một văn bản HTML, phương pháp này hết sức hiệu quả và nhanh chóng với một văn bản HTML đã được định dạng đúng chuẩn HTML và W3C. Với chuẩn này, nhiều website không tuân thủ. Do vậy, thử nghiệm một phương thức mới có tên là DOM (Document Object Model) [15] và kết hợp một vài biểu thức chính quy Regular Expression để tiến hành tìm kiếm thông tin một cách chính xác.

Hình 20 - Sơ đồ thông tin chung (Nguồn: tác giả)

Với thông tin của một trang, công cụ lọc ra những thông tin về title, meta, link, image, h1, h2, h3, bold, italic thông qua các phương thức chủ yếu trong file infopage.php. public function is_inlink($content)

{ $pattern = '/^http+[^.]+\.[^.]/'; if(preg_match($pattern,$content,$match)) return $match[0]; else return false; }

function is_inlink($content) kiểm tra có đúng đường dẫn không public function index_action()

{

if( !empty($_POST['q']) ){ $_q = $_POST['q'];

$_q = base64_encode(str_replace(array('http://','www.'),'',$_q)); $_q = str_replace('==','',$_q);

header('Location: '. URL_BASE . 'infopage/' . $_q); exit();

}

/**** Title tag *****/

$this->_['titletag'] = $titletag = strip_tags(trim(@$html->find('title', 0)->plaintext)); $this->_['titletag_none'] = empty($titletag)?'display:none':'';

Trả về nội dung của thẻ title.

4.2.3. Kết quả

Thông tin thu được từ công cụ thông tin chung cho ra một kết quả chính xác. Theo thống kê khi công cụ bắt đầu chạy thì mất khoảng 1 đến 3 giây để xử lý và rút trích thông tin của một URL đã nhập vào. Thời gian xử lý phụ thuộc vào một số yếu tố như: cấu trúc HTML có gọn nhẹ hay không, có nhiều hay ít tiêu chí đánh giá của Google trên URL đó hay không nếu nhiều tiêu chí thì việc rút trích sẽ lâu hơn, server lưu trữ website đó có mạnh không nếu tốc độ xử lý của server chậm thì cũng ảnh hưởng tới thời gian.

4.3. Công cụ SEO Onpage 4.3.1. Đặt bài toán 4.3.1. Đặt bài toán

Mục tiêu của việc tối ưu hóa trong trang là từ những thông tin cần thiết có ảnh hưởng đến thứ hạng của website. Công cụ phân tích SEO Onpage dựa vào những thông tin đó đi phân tích sâu hơn, để chỉ ra những yếu tố nào đã thực hiện tốt, yếu tố nào cần bổ sung, và yếu tố nào hủy bỏ. Giúp các webmaster có thể chỉnh sửa website có lợi nhất với các công cụ tìm kiếm. Với mục tiêu này, Công cụ phân tích SEO Onpage đã thực hiện việc chắt lọc những thông tin cần thiết cho các công cụ tìm kiếm, cụ thể như:

+ Thông tin cơ bản gồm: tiêu đề trang, file hình favicon, tập tin robots.txt, tập tin sitemap.xml, bộ đếm Google Analytics, ngôn ngữ lập trình, thông tin đăng ký. + Thẻ Meta gồm: Tiêu đề thẻ meta, thẻ meta description, thẻ meta keyword, thẻ meta robots.

+ Thẻ tiêu đề Heading gồm: Thẻ h1, thẻ h2, thẻ h3. + Thẻ định dạng văn bản gồm: thẻ em, thẻ strong.

+ Thẻ liên kết gồm: thẻ a đầu tiên, liên kết ngoài trang, liên kết ngoài trang không có TITLE, liên kết trong trang, liên kết trong trang không có TITLE.

+ Thẻ hình ảnh gồm: thẻ image, liên kết image không có ALT, liên kết image không có TITLE.

4.3.2. Phƣơng pháp giải quyết

Trong công cụ phân tích trong trang vẫn sử dụng phương thức DOM để xử lý và trích xuất thông tin chính xác, trong phần này code thực hiện khó hơn vì phải tính toán, phân tích, đưa ra lời khuyên để người dùng dựa trên kết quả đó để có hướng khắc phục cho website của mình.

Cách thức hoạt động theo sơ đồ

Hình 68 - Sơ đồ Onpage (Nguồn: tác giả)

Để có được thông tin cụ thể như vậy, công cụ phân tích SEO Onpage dùng các phương thức trong file seoonpage.php. Như đã nói ở trên, chúng ta có 6 phần thông để phân tích, chúng ta đi chi tiết vào từng phần.

Thông tin cơ bản

/**** Title tag *****/

$this->_['titletag'] = $titletag = strip_tags(trim(@$html->find('title', 0)->plaintext)); $this->_['titletag_char'] = @mb_strlen($titletag,'utf-8');

$this->_['titletag_word'] = str_word_count($titletag); if ($this->_['titletag_char']==0)

$this->_['titlesms']='<span class="bad">Bạn cần bổ sung nội dung thẻ title</span>'; elseif($this->_['titletag_char']<=30 || $this->_['titletag_char']>=80)

$this->_['titlesms']='<span class="wanning">Nội dung thẻ title đã ngoài khoảng [30 - 80]</span>';

else $this->_['titlesms']='<span class="good">Bạn đã làm tốt</span>';

Đoạn code này cho ra kết quả thông tin của thẻ title, giải thích một số tham số + Dòng đầu tiên: nội dung của thẻ title lấy từ file HTML

+ Dòng thứ hai: cho biết nội dung thẻ title có mấy ký tự. + Dòng thứ ba: cho biết nội dung thẻ title có mấy chữ . + Năm dòng cuối:

o Nếu thẻ title không có ký tự thì đưa ra lời khuyên “Bạn cần bổ sung nội dung thẻ title”

o Nếu ký tự <30 và >80 thì đưa ra lời khuyên “Nội dung thẻ title đã ngoài khoảng [30-80], ngược lại bạn đã làm tốt.

Thẻ META

/**** Description meta tag *****/

$this->_['metadescription'] = $metadescription = strip_tags(trim(@$html- >find('meta[name="description"]', 0)->content));

$this->_['metadescription_char'] = @mb_strlen($metadescription,'utf-8'); $this->_['metadescription_word'] = str_word_count($metadescription); if ($this->_['metadescription_char']==0)

$this->_['metadescriptionsms']='<span class="bad">Bạn cần bổ sung nội dung thẻ meta description</span>';

elseif($this->_['metadescription_char']<=100 || $this->_['metadescription_char']>=150) $this->_['metadescriptionsms']='<span class="wanning">Nội dung thẻ meta description đã ngoài khoảng [100 - 150]</span>';

else $this->_['metadescriptionsms']='<span class="good">Bạn đã làm tốt</span>'; Đoạn code này cho ra kết quả thông tin của thẻ meta description, giải thích tham số

+ Dòng thứ hai: đếm có mấy ký tự. + Dòng thứ ba: đếm có mấy từ. + Năm dòng cuối:

o Nếu ký tự của thẻ meta description =0 thì đưa ra lời khuyên “Bạn cần bổ sung nội dung thẻ meta description”.

o Nếu ký tự <100 và >150 thì đưa ra lời khuyên “Nội dung thẻ meta description đã ngoài khoảng [100 - 150], ngược lại bạn đã làm tốt”.

Thẻ Heading foreach($arrH1 as $e) { $h1_plaintext=$e->plaintext; if(!empty($h1_plaintext)){ $i++; if($i==1){ $this->_['h1'] = $h1 = strip_tags(trim($h1_plaintext)); $this->_['h1_char'] = @mb_strlen($h1,'utf-8'); $this->_['h1_word'] = str_word_count($h1); if($carrH1==1)

$this->_['h1sms']='<span class="good">Bạn đã làm tốt</span>'; else

$this->_['h1sms']='<span class="wanning">Nên chỉ có 1 thẻ H1 duy nhất trong 1 trang.</span>'; } $str_h1_ok = true; } else { $str_h1_ok = false; }

$h1divshow_hide .= htmlentities($e->outertext,ENT_QUOTES, "UTF-8" ).'<br> <br>'; }

Đoạn code này cho ra kết quả thông tin của thẻ H1, giải thích tham số + Duyệt qua hết các thẻ H1, nếu có thẻ H1 thì tăng biến đếm lên một

Vì là thẻ H1, mình chỉ cần lấy nội dung thẻ H1 đầu tiên, nếu đếm bằng 1, thì lấy nội dung, chiều dài ký tự, chiều dài từ.

Nếu trong mảng H1 lưu, chỉ có 1 H1 thì thông báo “Bạn đã làm tốt” Ngược lại, thông báo “Nên chỉ có 1 thẻ H1 duy nhất trong 1 trang”

Thẻ liên kết <A>

$this->_['inlink'] = $inlink;

$this->_['countinlink'] = $countinlink;

Đếm có bao nhiêu liên kết trong trang, và hiện những liên kết đó. $this->_['in_no_title_link'] =$in_no_title_link;

$this->_['count_in_no_title_link'] =$count_in_no_title_link;

Đếm có bao nhiêu liên kết trong trang không có title, và hiện liên kết đó $this->_['countoutlink'] = $countoutlink;

$this->_['outlink'] = $outlink;

Đếm có bao nhiêu liên kết ngoài trang, và hiện những liên kết đó. $this->_['out_no_title_link'] =$out_no_title_link;

$this->_['count_out_no_title_link'] =$count_out_no_title_link;

Đếm có bao nhiêu liên kết ngoài trang không có title, và hiện liên kết đó.

Thẻ hình ảnh <IMG>

$this->_['cimg']=$carrimg;

$this->_['img_link_all']=$img_link_all; Liệt kê tất cả các thẻ <IMG>

$this->_['img_no_title']=$img_no_title;

$this->_['img_link_no_title']=$img_link_no_title;

Liệt kê tất cả các thẻ <IMG> mà không có thuộc tính title $this->_['img_no_alt']=$img_no_alt;

$this->_['img_link_no_alt']=$img_link_no_alt;

Liệt kê tất cả các thẻ <IMG> mà không có thuộc tính ALT

4.3.3. Kết quả

Thông tin thu được từ công cụ phân tích SEO Onpage cho ra một kết quả khá chính xác trong tính toán. Theo thống kê khi công cụ bắt đầu chạy thì mất khoảng 1 đến 5 giây để xử lý và rút trích thông tin của một URL đã nhập vào. Theo sự trải nghiệm của tác giả thì nhận thấy rằng thời gian xử lý rất nhanh chóng, hơn một số công cụ khác trên internet như http://seotool.vn, thông tin được tập hợp theo từng nhóm để người dùng dễ quan sát, và mỗi thành phần trong nhóm được thể hiện khá đầy đủ, bên cạnh đó những thành phần được sắp xếp theo trật tự và theo hướng thân thiện vì nó khá giống với kết quả của công cụ tìm kiếm Google.

4.4. Công cụ SEO Offpage 4.4.1. Đặt bài toán 4.4.1. Đặt bài toán

Các công cụ offpage rất đa dạng nhưng chỉ sẽ thực hiện 5 công cụ hữu dụng có khả năng kiểm tra những thông tin khách quan do Alexa, Google, css-validator.org, who.is, tools.pingdom.com. Các chức năng gồm:

- Thông tin Alexa: Thông tin truy xuất từ trang www.alexa.com [12] bao gồm thứ hạn quốc tế, thứ hạng trong nước, số lượng backlink, ý nghĩa.

- Kiểm tra website có bị lỗi không: Thông tin truy xuất từ trang

https://www.google.com.vn/safebrowsing/diagnostic?site= [16] nhiều lúc website

của mình nằm trong danh sách chứa virut mà các công cụ tìm kiếm phát hiện. - Xác nhận website đúng tiêu chuẩn W3C: Công cụ trả về đánh giá từ trang

http://www.css-validator.org [13]

- Giúp bạn tra cứu thông tin chi tiết về một tên miền, được truy xuất từ trang

http://who.is/whois/ [14]. Thông qua thông tin whois cung cấp, bạn có thể biết

thông tin về chủ sở hữu tên miền, tên miền đang được duy trì tại nhà đăng ký tên miền nào. Tên miền được đăng ký từ khi nào và hết hạn vào khi nào.

- Cho biết tốc độ tải trang web rất quan trọng cho người lướt web, công cụ trả về đánh giá từ trang http://tools.pingdom.com [21] người lướt web chỉ hứng thú với những website load nhanh, còn khi một trang web đáp ứng chậm, thường thì họ sẽ mất kiên nhẫn và khả năng họ quay lại sẽ là rất thấp.Họ trả tiền internet để được hưởng những dịch vụ tốt nhất, nhanh nhất, chứ không phải để vào một trang web trắng xóa và bắt đầu chờ đợi.

4.4.2. Phƣơng pháp giải quyết

Công cụ phân tích SEO Offpage chuyên đi lấy những kết quả từ những trang web uy tín bên ngoài để bổ sung thông tin cho các webmaster. Với hàng tỷ webstie đang tồn tại, đi kèm với nó là một khối lượng thông tin vô cùng to lớn. Chính vì sự khổng lồ của thông tin như vậy dẫn đến việc tìm kiếm và tổng hợp trang web nào là uy tín quả thật là

rất khó khăn, tuy nhiên qua quá trình tìm hiểu và thực nghiệm đã đề xuất ra một số trang web rất tin tưởng vì đó là nguồn thông tin chuẩn quốc tế được cung cấp cho người dùng.

Cách thức hoạt động theo sơ đồ

Hình 22 - Sơ đồ Offpage (Nguồn: tác giả)

Từ sơ đồ cho ta thấy, thông tin sẽ được thu thập từ 5 nguồn khác nhau, cách thức lấy thông tin được đặt trong file seooffpage.php, chúng ta đi vào chi tiết.

Thông tin Alexa

$this->_['_alexa'] = 'http://www.alexa.com/search?q='.$_web; $htmlAlexa = @file_get_html($this->_['_alexa']);

$this->_['alexaGloble']= strip_tags(trim(@$htmlAlexa->find('.sitematch-bar a', 2)- >plaintext));

$this->_['alexaVN']= strip_tags(trim(str_replace('traffic rank in vn: ','',@$htmlAlexa- >find('.sitematch-bar span', 3)->plaintext)));

$this->_['alexaLink']= strip_tags(trim(@$htmlAlexa->find('.sitematch-bar a', 4)- >plaintext));

Đoạn code trên sẽ đọc địa chỉ [http://www.alexa.com/search?q='.$_web] Với $_web là trang web bạn nhập vào.

Sau đó lấy nội dung file HTML của trang Alexa, rồi phân tích các thẻ HTML bên trong để lấy

 Alexa quốc tế

 Alexa Việt Nam

 Liên kết Alexa (là backlink trỏ về website của mình)

Kiểm tra website có bị lỗi không

Khi click vào link kiểm tra thì nhảy qua tab mới trên trình duyệt theo địa chỉ:

https://www.google.com.vn/safebrowsing/diagnostic?site=[domain]

Thông tin được Google tổng hợp, cung cấp cho chúng ta.

Xác nhận website đúng tiêu chuẩn W3C

Khi click vào link xác nhận website thì một popup hiện ra trên trình duyệt theo địa chỉ: http://www.css-

validator.org/validator?uri=[DOMAIN]&profile=css21&usermedium=all&warning=1&lang=en

Tra cứu thông tin chi tiết về một tên miền

$this->_['_whois'] = 'http://who.is/whois/'.$_web; $htmlwhois = @file_get_html($this->_['_whois']);

$whoiscontent = trim(@$htmlwhois->find('#registry_whois', 0)->innertext); $this->_['whoiscontent']= $whoiscontent;

$whoiscontentraw_data = trim(@$htmlwhois->find('.raw_data', 0)->innertext); $this->_['whoiscontentraw_data'] = preg_replace("/<img(.+?)>/is", ""

,$whoiscontentraw_data);

$restr = $this->view->view_assign($block['whois'],$this->_); Đoạn code trên sẽ đọc theo địa chỉ: [http://who.is/whois/'.$_web]

Với $_web là trang web bạn nhập vào

Sau đó lấy thông tin theo 2 tham số $whoiscontent và $whoiscontentraw_data

+ Tốc độ tải trang web:

http://tools.pingdom.com

4.4.3. Kết quả

Với những thông tin thu được từ những trang web uy tín cho một kết quả thực tế và chính xác, do đó kết quả của công cụ phân tích SEO Offpage rất khả quan.

4.5. Công cụ tạo sitemap 4.5.1. Đặt bài toán 4.5.1. Đặt bài toán

Như chúng ta đã biết với một website sẽ có rất nhiều trang, làm cách nào đó để quét tất cả các liên kết trong trang và lưu lại thành file có tên sitemap.xml, sitemap là một danh sách các trang hoặc các liên kết của trang web để người đọc dễ dàng truy cập hoặc để cho các con bọ của các công cụ tìm kiếm dễ dàng thu thập thông tin.

4.5.2. Phƣơng pháp giải quyết

Đối với mỗi trang web thì sẽ có hàng trăm, hàng ngàn liên kết. Mỗi liên kết một loại thuộc tính là follow hoặc nofollow, với follow có nghĩa là cho phép theo liên kết đó, còn nofollow thì không cho phép theo.

Bắt đầu từ một trang trong website, tiến hành lấy toàn bộ thông tin về liên kết của trang đó, với thông tin này ta quan tâm tới liên kết trong trang hay liên kết ngoài trang và thuộc tính rel là follow hoặc nofollow. Sau đó chúng ta tiếp tục xác định trang để quét kế tiếp, và phải đảm bảo rằng các liên kết phải trong một site, có thuộc tính là follow và chưa quét lần nào.

Để tạo được một sitemap hoàn chỉnh đa phần code xử lý nằm ở file sitemappage.php.

require_once (PATH_BASE.'library/handle/sitemaper.php'); $sitemap = new handle_sitemaper();

Gọi file sitemaper.php theo đường dẫn 'library/handle/sitemaper.php' để khởi tạo biến mới có tên là $sitemap.

//setting rules to ignore URLs which contains these substrings

$sitemap->set_ignore(array("javascript:","#", ".css", ".mp3", ".js", ".ico", ".jpg", ".png", ".jpeg", ".swf", ".gif"));

Nếu những liên có trong biến $sitemap có những đuôi giống ở trên thì ta loại bỏ, vì những đuôi trên không phải là liên kết <A>, mà đa phần là file hình, file nhạc, file flash.

//parsing other page and gathering links $sitemap->get_links($_wesite); $file = 'sitemap.xml';

header("Content-type: text/xml;charset=utf-8;");

header('Content-Disposition: attachment; filename='.basename($file)); //generating sitemap

echo $map = $sitemap->generate_sitemap($_wesite);

Lấy hết liên kết được lưu ở biến $sitemap bỏ vào file có tên là sitemap.xml, nội dung header của sitemap là nội dung giống ở dòng 4,5.

4.5.3. Kết quả

Mặc dù là liệt kê những liên kết trong site, có thuộc tính rel là follow và lưu vào file thật sự rất khó khăn, khó khăn hơn nữa là đã lưu liên kết vào rồi nhưng phải kiểm tra xem đã có chưa, điều này đã ngốn nhiều thời gian và tài nguyên của máy tính.

Bên cạnh đó nếu một số website mà có phần mềm bảo vệ hay tường lửa cũng là lý do để quét chậm. Công cụ vẫn tạo ra được sitemap.xml, theo cấu trúc của trang web, tần suất cập nhật nội dung của trang và trang nào được ưu tiên hơn trong kết quả tìm kiếm.

Tổng kết

Công cụ hỗ trợ cho các webmaster có những thông tin cần thiết để tối ưu hóa website của mình thân thiện với các công cụ tìm kiếm. Tác giả đặt tên công cụ này là “Seogby”, Seogby đã đáp ứng được mục tiêu đề tài luận văn đề ra và sau đây là nhận xét tổng quát về công cụ:

Ƣu điểm:

Hiện tại công cụ được chạy trên localhost, chạy ổn định.

Giao diện thân thiện vì có nét giống với công cụ tìm kiếm Google, dễ sử dụng. Thời gian xử lý nhanh chóng, hiện thị kết quả chính xác đúng yêu cầu.

Sử dụng những kỹ thuật mới như CS3, HTML5, Jquery.

Công cụ cho kết quả chi tiết để webmaster có đầy đủ thông tin.

Trong công cụ thông tin chung có đưa ra những hướng dẫn để hướng người dùng tối ưu hóa trong các thẻ, và bên cạnh đó cũng đưa ra những lỗi dựa vào kinh nghiệm thực tế để người dùng hạn chế ít sai nhất có thể.

Một phần của tài liệu luận văn thạc sỹ xây dựng công cụ hỗ trợ tối ưu hóa website cho các công cụ tìm kiếm (Trang 74 - 100)