Đang tải... (xem toàn văn)
Nội dung
Trong đó: • phần khai báo kiểu liệu hiển thị html để trình duyệt biết • cặp thẻ nằm có nhiệm vụ bao hết nội dung trang Web lại Thẻ bắt buộc • phần khai báo thông tin trang Web • phần khai báo tiêu đề trang Web • thành phần quan trọng nhất, chứa đoạn mã HTML dùng để hiển thị trang Web • Các thẻ lại nằm thẻ thẻ định dạng liệu Chúng ta đặc biệt quan tâm đến nội dung trang Web có thẻ thẻ định dạng liệu nằm triển khai ứng dụng thu thập liệu việc làm 1.2.2 Công cụ Inspect Element trình duyệt Inspect Element công cụ hỗ trợ tuyệt vời trình duyệt giúp ta xác định thẻ HTML định dạng liệu cách nhanh chóng 10 3.1.2 Cơ sở liệu ứng dụng thu thập liệu việc làm Do phục vụ cho mục đích tra cứu thông tin việc làm nên sở liệu ứng dụng đơn giản Cơ sở liệu gồm bảng: • Bảng tblconfig: Chứa thông số thiết lập ban đầu, người sử dụng cần nhập lần lần sau chọn thiết lập lưu sẵn cú click chuột Bảng gồm trường sau: + cfId: id bảng tblconfig + cfName: tên cấu hình Ví dụ: Crawler websiteA, Crawler websiteB… + cfHost: liên kết trang chủ trang Web đích + cfSite: liên kết trang hạt giống – Seed, từ thu thập URL ứng với lĩnh vực việc làm + cfGroup: thẻ, thuộc tính HTML lĩnh vực việc làm + cfGroupUrl: Url lĩnh vực việc làm, sử dụng muốn thu thập lĩnh vực tuyển dụng không thu thập tất lĩnh vực + cfPage: tương tự cfGroup dành để lấy thông tin trang trang 1, trang 2… + cfNumPage: số trang muốn thu thập lĩnh vực + cfItem: lấy thông tin khối(block) công việc tuyển dụng Ví dụ lĩnh vực A chia làm nhiều trang, trang có chứa 10 công việc + cfTitle: lấy thông tin tiêu đề viết tuyển dụng + cfDate: lấy thông tin ngày tháng năm đăng viết tuyển dụng + cfSalary: lấy thông tin mức lương công việc + cfPlace: lấy thông tin nơi làm việc + cfCompany: lấy thông tin tên công ty tuyển dụng + cfContent: lấy thông tin nội dung viết tuyển dụng + cfLogin: chứa liên kết đến trang đăng nhập, dùng trang Web bắt đăng nhập cung cấp đủ thông tin mong muốn + cfSession: chứa session đăng nhập Khi đăng nhập trang Web sinh session ta sử dụng session phục vụ cho ứng dụng + cfRmvImg: tùy chọn có xóa ảnh thu thập thông tin hay không Việc xóa ảnh giúp trình thu thập thông tin diễn nhanh mà ảnh hưởng đến giá trị thông tin thu + cfRmvA: tùy chọn có xóa liên kết có viết tuyển dụng hay không 39 + cfbeforeDate: theo khảo sát số trang Web có phần ngày đăng tuyển theo dạng: Đăng ngày 01/01/2016 Để dễ dàng lấy thông tin 01/01/2016 Ứng dụng xóa số kí tự phía trước Như ví dụ trên, ta cần nhập trường 10 để xóa ‘Đăng ngày ’ phía trước • Bảng tbldata: Chứa liệu việc làm có từ trình thu thập tự động Bảng có chứa trường tương ứng với bảng tblconfig sau: + cId: id bảng tbldata + cTitle: tiêu đề viết tuyển dụng + cContent: nội dung viết tuyển dụng + cDate: ngày đăng viết tuyển dụng + cGroup: lĩnh vực tuyển dụng + cCompany: công ty tuyển dụng + cSalary: mức lương công việc + cPlace: nơi làm việc Để dễ dàng theo dõi hơn, ta có chi tiết cấu trúc bảng sau: Hình 3.3: Cấu trúc bảng tblconfig 40 Hình 3.4: Cấu trúc bảng tbldata 3.1.3 Giao diện ứng dụng thu thập liệu việc làm Tương ứng với môđun, giao diện ứng dụng chia làm mục lớn theo dạng Tab bao gồm ‘CONFIGURATION’ ‘JOBS INFORMATION’ Mục thứ ứng với môđun thu thập liệu, người sử dụng nhập vào thiết lập ban đầu sau bắt đầu thu thập cách nhấn nút ‘START CRAWL’ lưu thông số thiết lập lại cách nhấn nút ‘SAVE CONFIG’ Các thông số thiết lập lưu hiển thị bên phải theo dạng Tab Ta thiết lập nhanh cách nhấn nút ‘SET CRAWL’ Hình 3.5: Mục ‘Configuration’ ứng dụng thu thập liệu việc làm Tiếp theo mục ‘JOBS INFORMATION’ Kết thu ứng dụng thu thập liệu việc làm Đầu tiên ta chọn lĩnh vực muốn tra cứu, tất cả, lĩnh vực cụ thể 41 Hình 3.6: Danh sách lĩnh vực tuyển dụng muốn tra cứu Hình 3.7 giao diện sau chọn lĩnh vực, thông tin viết hiển thị theo dạng bảng, điều chỉnh cách xếp, xem theo thứ tự thời gian cũ nhất, tìm kiếm theo từ khóa… Hình 3.7: Danh sách việc làm thu thập Do thông tin nội dung viết dài không phù hợp hiển thị theo dạng bảng, ta cần ẩn cần lên cách nhấp chuột vào ‘Xem chi tiết nội dung’ 42 Hình 3.8: Chức xem chi tiết nội dung tuyển dụng 3.1.4 Cách thiết lập thông số ban đầu cho ứng dụng thu thập liệu việc làm Hình 3.9: bước hoạt động ứng dụng thu thập liệu việc làm Ứng dụng hoạt động dựa theo bước chính: • Thiết lập thông số: yêu cầu người sử dụng nhập vào thông tin ban đầu phần tử chứa thông tin mong muốn • Thu thập liệu: ứng dụng bắt đầu trình thu thập tự động, thông tin thu thập lưu vào sở liệu • Hiển thị liệu thu thập được: thông tin việc làm hiển thị cho người dùng tra cứu Việc thiết lập thông số ban đầu quan trọng thiết lập ứng dụng hoạt động tốt thu thập thông tin có giá trị Đầu tiên điền vào URL cần thiết trang chủ, trang lấy URL lĩnh vực, trang đăng nhập Để lấy giá trị xác phần tử mục dạng ‘Get … Tag’, ta cần sử dụng công cụ ‘inspect element’ giới thiệu chương Ví dụ muốn lấy giá trị để điền vào ô ‘Get group tag’, ta cần vào trang Web đích, nhấp chuột phải vào lĩnh vực bất kì, chọn ‘Inspect Element’, sau tìm thẻ thích hợp 43 Hình 3.10: Sử dụng công cụ Inspect Element để lấy thẻ HTML Như hình trên, ta lấy giá trị ‘.col-md-6 ul li a’ để điền vào ô ‘Get group Tag’ Giá trị ô ‘Get item Tag’, ‘Get page Tag’… lấy theo cách tương tự Giá trị ô ‘Get session’ có chút khác biệt so với thông số lại Ta cần lấy giá trị session đăng nhập trang Web để điền vào ô Cách lấy sau: truy cập vào trang đăng nhập Web đích, tạo tài khoản đăng nhập, sau tìm thông tin session cách nhấn F12 vào mục Net (hoặc Network) Phần khoanh ô vuông ảnh sau session cần lấy Hình 3.11: Sử dụng công cụ Inspect Element để lấy biến session Các ô lại ‘Number of page’ số trang thu thập lĩnh vực, ‘Remove Image, Remove link’ cho phép người dùng xóa ảnh liên kết có nội dung viết tuyển dụng Và ‘Date Substring: Before’ xóa số 44 kí tự trước phần tử ngày chúng có dạng ‘đăng tuyển 1/1/2016’ ‘ngày 1/1/2016’ Ví dụ ‘đăng tuyển 1/1/2016’ ta cần xóa 11 kí tự đằng trước để thu giá trị ngày tháng năm xác Ứng dụng hoạt động theo cách: thu thập thông tin trang Web theo tất lĩnh vực theo lĩnh vực cụ thể Nếu người sử dụng muốn thu thập tất cả, ô ‘Get group URL(crawl only category)’ phải bỏ trống, ứng dụng tự hiểu người sử dụng muốn thu thập tất Ngược lại, muốn thu thập riêng lĩnh vực, người sử dụng cần điền URL lĩnh vực mong muốn vào ô Hình 3.11 cho thấy Frontier theo cách thu thập tất thu thập riêng lĩnh vực Ví dụ chọn số trang thu thập 5, lĩnh vực có URL nằm Frontier Như vậy, có 100 lĩnh vực Frontier bao gồm 500 URL Hình 3.12: Frontier chứa danh sách lĩnh vực tuyển dụng theo cách thu thập 3.2 Đánh giá kết thu thập ứng dụng thu thập việc làm Ứng dụng xây dựng theo dạng Web Server đồng nghĩa với việc sử dụng lúc nhiều người Và hiểu Tab trình duyệt truy cập tới ứng dụng luồng hoạt động Như ta tăng tốc độ thu thập thông tin cách đơn cách sử dụng nhiều Tab để truy xuất tới ứng dụng Kết thực nghiệm, ứng dụng thu thập 1000 kết từ Website ‘http://www.vietnamworks.com/’ thời gian 34 phút 40 giây Như tốc độ thu thập ứng dụng 0.48record/s Tốc độ tải trình duyệt trang chi tiết việc làm 10.2s Một phép tính đơn giản thực theo cách thủ công để duyệt hết 1000 trang ta cần tới 10200s tương đương 48 phút chưa kể 45 thao tác lưu liệu Kết coi thành công bước đầu việc xây dựng ứng dụng thu thập liệu nhanh, hiệu Một thử nghiệm khác, ứng dụng thu thập tổng cộng 2405 kết thời gian 30phút Như tốc độ thu thập 0.44record/s Có thể thấy tốc độ thu thập ứng dụng phụ thuộc nhiều vào tốc độ ổn định đường truyền mạng Internet Do hạn chế trình độ nên hiệu suất ứng dụng chưa thể so sánh với ứng dụng thu thập liệu phổ biến lớn nhiên hi vọng ứng dụng giúp ích cho số người trình tìm kiếm việc làm 3.3 Đánh giá ưu nhược điểm ứng dụng thu thập việc làm 3.3.1 Ưu điểm Ưu điểm rõ nhìn thấy tốc độ thu thập nhanh nhiều so với duyệt trang Web theo cách thủ công, liệu thu thập xác giảm tối đa việc thu thập thông tin thừa Cách hiển thị liệu thu thập ưu điểm ứng dụng chúng xếp theo dạng bảng, tra cứu theo từ khóa, theo lĩnh vực việc làm riêng, xếp theo thời gian Khi nhìn vào ứng dụng, ta thấy thông tin mong muốn nhìn thấy thông tin thừa hình quảng cáo Ngoài việc liệu lưu lại sở liệu giúp ta tra cứu thông tin thu thập mạng Internet Có thể tóm tắt ưu điểm ứng dụng ý sau đây: • Tốc độ thu thập nhanh liệu thu thập xác duyệt trang thủ công • Tùy vào mục đích sử dụng thu thập theo tất lĩnh vực tuyển dụng lĩnh vực riêng lẻ • Giao diện tra cứu việc làm hiển thị đơn giản, dễ sử dụng, tra cứu theo từ khóa, thời gian, xếp tăng dần giảm dần, tùy chỉnh số lượng ghi hiển thị 3.3.2 Nhược điểm Ứng dụng phát triển nên nhiều mặt hạn chế cần phải khắc phục Đầu tiên việc để thiết lập thông số ban đầu xác đòi hỏi người sử dụng phải tìm hiểu HTML, hay việc thu thập tự động gặp khó khăn với trang Web không sử dụng phân trang mà dùng Ajax để tải trang Giải thuật môđun thu thập cần nâng cấp thêm để tăng tốc độ thu thập Mặc dù trường hợp thu thập ứng dụng việc làm, phạm vi thông tin nhỏ 46 triển khai thu thập phạm vi rộng thời gian tương đối lớn so với trình thu thập tiếng khác Cùng với hoạt động phạm vi rộng cấu trúc sở liệu cần thay đổi để phù hợp chặt chẽ Có thể tóm tắt hạn chế ứng dụng ý sau: • Đòi hỏi người sử dụng phải có kiến thức HTML, phải thời gian làm quen để thiết lập cấu hình xác • Gặp khó khăn trang Web dùng Ajax để tải trang (ví dụ ấn ‘Xem thêm’ trang Web không chuyển hướng sang trang mà tải tiếp nội dung xuống dưới) • Nếu hoạt động phạm vi rộng giải thuật sở liệu cần nâng cấp để nâng cao tốc độ thu thập tăng tính ổn định • Cần phát triển nhiều tính có ích hướng đến người sử dụng 3.4 Hướng phát triển ứng dụng thu thập liệu việc làm Nhu cầu tìm việc luôn lớn để đáp ứng nhu cầu tìm việc ứng dụng thu thập liệu việc làm cần phát triển, nâng cấp để người sử dụng có trải nghiệm tốt nhất, sử dụng đơn giản dễ hiểu Ngoài cần phát triển thêm tính phụ trợ Một số ý tưởng phát triển là: • Cho phép người sử dụng chọn lĩnh vực muốn theo dõi, sau khoảng thời gian định ứng dụng tự động thu thập thông tin việc làm lĩnh vực Nếu có công việc thông báo cho người sử dụng (hoạt động tương tự chức báo tin Facebook) Tính khả thi, người dùng nhập vào lĩnh vực muốn theo dõi, thiết lập khoảng thời gian, sau ứng dụng tạo thread hoạt động liên tục Tuy nhiên hạn chế điều việc hoạt động liên tục ảnh hưởng đến hiệu suất hoạt động máy tính yếu • Phát triển ứng dụng tảng điện thoại di động Hiện điện thoại di động thông minh (smart phone) trở thành phần thiếu sống, người dùng lại theo dõi thông tin việc làm thu thập tự động qua điện thoại mình, tra cứu lúc nơi mà không cần phải dùng máy tính Đây hướng phát triển thiết thực cần thiết để người sử dụng thuận tiện • Từ thu thập việc làm ta phát triển ứng dụng lên thành thu thập tài liệu học tập, file văn bản, thông tin thời sự, tin tức, giải trí… theo 47 hướng phát triển thành trang Web thông tin tổng hợp, tương tự ‘dantri.com.vn’, ‘kenh14.vn’ 48 KẾT LUẬN Qua ba chương, đồ án đạt số kết định Cụ thể: Chương đưa kiến thức tổng quan thu thập liệu tự động, khai phá liệu, khái niệm Web, ngôn ngữ HTML, công cụ hỗ trợ trình xây dựng ứng dụng thu thập liệu cấu trúc trang thông tin điện tử Ở chương 2, đồ án sâu vào tìm hiểu vấn đề thu thập liệu tự động, gồm có mô hình hệ thống thu thập liệu tự động, tính cần có, sách nên tuân thủ, kỹ thuật, chiến lược thu thập Đồng thời đưa cách đánh giá trình thu thập liệu dựa vào độ hoàn chỉnh độ xác Các khái niệm thư viện SIMPLE_HTML_DOM cURL ứng dụng xây dựng ứng dụng thu thập thông tin việc làm tự động giới thiệu chương Trong chương 3, đồ án trình bày chi tiết mô hình hoạt động ứng dụng thu thập liệu việc làm tự động, hướng dẫn cách thiết lập thông số ban đầu để thu thập liệu xác Đồng thời chương nêu ưu điểm mặt hạn chế, hướng phát triển ứng dụng Dù vậy, số vấn đề liên quan đến thu thập liệu mà đồ án chưa sâu ứng dụng đầy đủ thuật toán thu thập liệu để so sánh hiệu suất thu thập chúng, kỹ thuật thu thập liệu mà liệu thu thập thuộc nhiều định dạng khác Việc giải điểm tồn hướng phát triển tương lai đồ án 49 TÀI LIỆU THAM KHẢO Tiếng Việt [1] Đỗ Thị Diệu Ngọc, “TỔNG QUAN VỀ KHAI PHÁ DỮ LIỆU WEB”, K44 Đại học Công nghệ ĐHQGHN http://uet.vnu.edu.vn/~thuyhq/Student_Thesis/K44_Do_Thi_Dieu_Ngoc_Thesis.p df [2] “Dùng PHP Crawler Để Lấy Dữ Liệu Tự Động Từ Một Website”, 7/2015 http://phpcoban.com/demo-dung-php-crawler-de-lay-du-lieu-tu-dong-tu-motwebsite/ Tiếng Anh [3] Marc Najork, “Web Crawler Architecture”, 2010 http://research.microsoft.com/pubs/102936/eds-webcrawlerarchitecture.pdf [4] Trupti V Udapure, Ravindra D Kale, Rajesh C Dharmik, “Study of Web Crawler and its Different Types”, Feb 2014 http://www.iosrjournals.org/iosr-jce/papers/Vol16-issue1/Version6/A016160105.pdf [5] Raja Iswary, Keshab Nath, “WEB CRAWLER”, October 2013 http://www.ijarcce.com/upload/2013/october/50-o-Keshab_Nath_web_crawler.pdf [6] Wikipedia, “Web crawler” https://en.wikipedia.org/wiki/Web_crawler [7] S.C Chen, “PHP Simple HTML DOM Parser Manual” http://simplehtmldom.sourceforge.net/manual.htm [8] Pavalam S M, S V Kashmir Raja, Felix K Akorli, Jawahar M, “A Survey of Web Crawler Algorithms”, November 2011 http://ijcsi.org/papers/IJCSI-8-6-1-309-313.pdf [9] Ayoub Mohamed H Elyasir, Kalaiarasi Sonai Muthu Anbananthen, “Focused Web Crawler”, 2012 [10] Manpreet Kaur, Yasmeen Kaur Dhaliwal, “Focused Crawler: A Review”, May 2014 [11] Chen Ding, “Network and Parallel Computing: IFIP International Conference NPC 2010 p 91”, 2010 [12] Aviral Nigam, “Web Crawling Algorithms”, September 2014 50 [13] Wikipedia, “Precision and recall” https://daniel.haxx.se/curl-20071208.pdf [14] W3Schools, “HTML DOM” http://www.w3schools.com/js/js_htmldom.asp [15] Daniel Stenberg, “curl and libcurl”, 2007 https://daniel.haxx.se/curl-20071208.pdf 51 PHỤ LỤC Một số đoạn mã chương trình minh họa hoạt động ứng dụng thu thập việc làm tự động: • Lấy thông tin thiết lập ban đầu người sử dụng nhập vào để xử lý //thêm thư viện simple_html_dom include ("simple_html_dom.php"); //thêm hàm tương tác với sở liệu include ("db/dbTools.php"); //lấy biến thiết lập người dùng nhập vào thông qua phương thức get $hostUrl = $_GET['host_input']; $siteUrl = $_GET['site_input']; $session = $_GET['session_input']; $groupTag = $_GET['group_input']; $groupOnlyUrl = $_GET['group_input_only']; $pageUrl = $_GET['page_input']; $itemUrl = $_GET['item_input']; $infoUrl = $_GET['info_input']; $info2Url = $_GET['info2_input']; $info3Url = $_GET['info3_input']; $info4Url = $_GET['info4_input']; $CompanyTag = $_GET['info5_input']; $ContentTag = $_GET['info6_input']; $login_url = $_GET['login_input']; $page_num_input = $_GET['page_num_input']; $remove_img = false; $remove_a = false; $beforeDate_input = $_GET['beforeDate_input']; if(isset($_GET['remove_img']) && $_GET['remove_img'] == '1') $remove_img = true; if(isset($_GET['remove_a']) && $_GET['remove_a'] == '1') $remove_a = true; • Tạo session đăng nhập để xem mức lương $ch = curl_init(); $agent = $_SERVER["HTTP_USER_AGENT"]; curl_setopt($ch, CURLOPT_USERAGENT, $agent); curl_setopt($ch, CURLOPT_URL, $login_url ); curl_setopt($ch, CURLOPT_POST, ); curl_setopt($ch, CURLOPT_POSTFIELDS, $session); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); • Lấy mảng chứa URL lĩnh vực tuyển dụng $html = file_get_html($siteUrl); $ret = $html->find($groupTag); foreach($ret as $r): $u = $r->href; //liên kết URL 52 $n = $r->innertext; endforeach; //tên lĩnh vực tuyển dụng • Hiển thị liệu thu thập theo dạng bảng Ajax $(document).ready(function () { $("#groupSelect").change(function () { var value = document.getElementById('groupSelect').value; $.ajax({ url: "ajaxInfo.php?value=" + value, success: function (result) { var dataArray = JSON.parse(result); document.getElementById('place').innerHTML = ""; document.getElementById('place').innerHTML = ''; $('#table_info').DataTable({ data: dataArray, columns: [ {title: "ID"}, {title: "Title"}, {title: "Content"}, {title: "Date"}, {title: "Group"}, {title: "Company"}, {title: "Salary"}, {title: "Place"} ] }); } }); }); }); • Hàm chuyển đổi liệu ngày tháng năm thu thập thành dạng chuẩn để lưu vào sở liệu function convertTime($date){ if(strpos($date, "-")!==false){ list($d,$m,$y) = explode("-",$date); }elseif(strpos($date, "/")!==false){ list($d,$m,$y) = explode("/",$date); } else{ return date("Ymd"); } if(strlen($y2.$m.$d)!=8){ return date("Ymd"); } return $y2.$m.$d; } 53