Sử dụng Workbench bánh xích, bạn có thể: Hình dung một bộ sưu tập của các trang web như là một đồ thị Lưu các trang vào đĩa địa phương của bạn để duyệt offline Nối các trang lại vớ
Trang 1TR ƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI NG Đ I H C BÁCH KHOA HÀ N I ẠI HỌC BÁCH KHOA HÀ NỘI ỌC BÁCH KHOA HÀ NỘI ỘI
KHOA ĐIỆN TỬ - VIỄN THÔNG
*************
BÁO CÁO ĐỒ ÁN THIẾT KẾ I
ĐỀ TÀI : Chương trình Crawler Web
Sinh viên thực hiện: Ngô Sơn Tùng
Trang 2Lời cảm ơn
Sau một thời gian học tập môn Project I, dưới sự hướng dẫn tận tình của thày Nguyễn Quang Minh,đến nay em đã hoàn thành Project I Đề hoàn thành được đề tài lần này, em chân thành cảm
ơn thày đã giảng dạy, hướng dẫn, truyền đạt những kiến thức và kinh nghiệm quý báu cho chúng em trong suốt học kì vừa qua Em xin chúc thầy và gia đình luôn luôn mạnh khỏe và công tác tốt
Sinh viên : Ngô Sơn Tùng.
Trang 3Giới thiệu về đề tài
Internet đã và đang phát triển một cách mạnh mẽ Nó đã trở thành một phần không thể thiếu của mỗi một cơ quan nhà nước, công ty, trường học và thậm chí là mỗi hộ gia đình Nguyên nhân của việc Internet ngày càng phổ biến trong cuộc sống con người như vậy là do lượng thông tin phong phú đa dạng mà ta có thể tìm thấy ở trên đó Với Internet ta có thể ngồi một chỗ mà
có thể tìm được mọi thông tin cần thiết mà ta muốn biết về bất kì một lĩnh vực nào, từ văn hóa, xa hội đến những kiến thức khoa học như toán học, vậtlý… Cùng với sự phát triển mạnh mẽ của Internet thì lượng thông tin trên
đó cũng ngày càng khổng lồ Điều đó làm cho việc thu thập dữ liệu mà ta cần thiết về một vấn đề nào đó trở nên khó khăn Điều đó đòi hỏi cần có mộtcung cụ thu thập dữ liệu tự động trên Internet giúp chúng ta giải quyết vấn
đề thu thập chọn lọc thông tin cần thiết trong lượng thông tin khổng lồ có trên Internet
Đề tài Project lần này của em chính là xây dựng một công cụ thu thập
dữ liệu như vậy Nó là một cung cụ thu thập dữ liệu một cách tự động trên Internet dựa vào một URL cho sẵn và tải về máy tính những dữ liệu tìm được Chương trình của bọn em được viết bằng ngôn ngữ lập trình Java chạytrên nền Windows được gọi là Web Crawler
Trang 5Chương I :Giới thiệu về chương trình
1.Tổng quan về chương trình
Chương trình mà chúng em xây dựng có tên là WebSphinx ( cá nhân tùy chỉnh Webcrawler) Chương trình được tham khảo từ trang :
http://www.cs.cmu.edu/~rcm/websphinx/#download
WebSPHINX là một thư viện lớp Java và môi trường phát triển
tương tác cho trình thu thập web Một trình thu thập dữ liệu web (còn được gọi là một robot nhện) là một chương trình duyệt và xử lý các trang Web tự động
WebSPHINX bao gồm hai phần: Workbench bánh xích và các thư viện lớp WebSPHINX
1.1 Crawler Workbench
Workbench Crawler là một giao diện người dùng đồ họa cho phép bạncấu hình và kiểm soát một trình thu thập web tùy biến Sử dụng Workbench (bánh xích), bạn có thể:
Hình dung một bộ sưu tập của các trang web như là một đồ thị
Lưu các trang vào đĩa địa phương của bạn để duyệt offline
Nối các trang lại với nhau để xem hoặc in chúng như một tài liệu duy nhất
Trích xuất tất cả các văn bản phù hợp với một khuôn mẫu nhất định từmột tập hợp các trang
Phát triển một trình thu thập tùy chỉnh trong Java hay Javascript xử lý các trang web tuy nhiên bạn muốn
1.2 WebSPHINX lớp thư viện
WebSPHINX lớp thư viện cung cấp hỗ trợ cho trình thu thập web bằng văn bản trong Java Các lớp thư viện cung cấp một số tính năng:
Trang 6 Một mô hình đối tượng một cách rõ ràng đại diện cho các trang và cácliên kết
Hỗ trợ cho phân loại nội dung trang có thể tái sử dụng
Chịu HTML phân tích cú pháp
Hỗ trợ cho các tiêu chuẩn loại trừ robot
Mô hình kết hợp, bao gồm các biểu thức thông thường, ký tự đại diện của Unix, và các biểu thức thẻ HTML Biểu thức thông thường được cung cấp bởi jakarta-regexp Apache thư viện biểu hiện thường xuyên
Chuyển đổi HTML thông thường, chẳng hạn như concatenating trang,tiết kiệm các trang vào đĩa, và các liên kết đổi tên
2.Sử dụng Websphinx
Chương trình có thể làm việc ở hai chế độ đó là cơ bản và nâng cao.
Chế độ cơ bản :
Trang 7
Hình 2 : Chế độ nâng cao.
Vì kiến thức có hạn nên khi chúng em xây dựng chế độ làm việc phần nâng cao còn nhiều lỗi xảy ra, chưa thể khắc phục được, chương trình chưa thể chạy theo ý muốn Tuy nhiên, với phần làm việc ở chế độ cơ bản chươngtrình Websphinx cũng đã phần nào đáp ứng được yêu cầu của đề tài project lần này là thu thập được những Url liên quan từ Url cho trước Do đó, ở đây chúng em xin phép chỉ trình bày việc chạy chương trình ở chế độ cơ bản
Chương trình sẽ crawler các URLs liên quan bằng một URL cho trước Ví dụ ở đây là http://www.dantri.com.vn Khi crawler, chương trình
có thể thu thập các dữ liệu web theo các hướng khác nhau mà ta có thể tùy chỉnh được đó là cây con, máy chủ hoặc trang web Chương trình sẽ hiển thịkết quả thu thập dưới dạng đồ thị hoặc đường dẫn liên kết( outline) hoặc thống kê quá trình thu thập cho ta
Trang 8
Hình 4 : Chương trình đang hoạt động
Sau khi hoàn tất việc thu thập dữ liệu ta có thể lưu giữ kết quả thu được vào máy tính Ta có thê tùy chỉ thư mục mà ta lưu trữ kết quả thu được khi thu thập dữ liệu:
Trang 9
Hình 5: Lưu kết quả thu thập dữ liệu vào máy tính
Với nhưng thao tác cơ bản kể trên với chương trình chúng em đã thực hiện việc thu thập dữ liệu với những website khác nhau
3.Kết quả thu được khi sử dụng chương trình
Ở đây chúng em xin trình bày kết quả thu được sau khi chạy chươngtrình để thu thập dữ liệu từ 5 website khác nhau đó là :
Trang 10Hình 6: Kết quả thu được
Sau đây là kết quả thu được sau khi làm việc với từng trang cụ thể
3.1 Trang “dantri”
Trang 11Hình 7: Qúa trình thu thập
Trang 12Hình 8 và 9: Kết quả nhận được.
3.2 Trang “vnexpress.net”
Trang 133.2 Trang “24h”
Trang 15
3.4.Trang “baomoi”
Trang 163.5.Trang “bongdaso”
Trang 17Chương 4: Giải trình về code chương trình
Gồm các hàm : ActionFeatureArgs, browse, getColor
getConcatFilename , getExtractFilename, getExtractPattern,
getExtractUseBrowser, getIcon, getMirrorDirectory,
getMirrorUseBrowser, getScale, getScript, getTextOnly,
handleEvent, setColor, setConcatFilename, setConcatUseBrowser, setExtractFilename, setExtractPattern, setExtractUseBrowser,
setIcon, setMirrorDirectory, setMirrorUseBrowser, setScale,
Trang 18 Class ClassifierListEditor
Mở rộng từ Panel
Gồm các hàm :
ClassifierListEditor, getCrawler, handleEvent, newClassifier,
removeSelectedClassifier, scan, setCrawler
getApplet, getAppletContext, getBrowser, getScriptInterpreter,
internalSetApplet, isApplet, isApplication, setApplet
Class CrawlerEditor
Trang 19DualPredicate, connected, disconnected, equals,
getNegativePredicate, getPositivePredicate, shouldActOn,
GraphLayout, addEdge, addNode, changedGraph, clear, click,
createOffscreenArea, drag, drawArrowToBox, drop, finalize,
getAlgorithm, getAutomaticLayout, getEdgeColor, getFontMetrics, getGraph, getInterval, getIterations, getNodeCharge, getNodeColor, getQuiescent, getRestLength, getRunning, getSelectedEdge,
getSelectedNode, getSpringConstant, getThreshold, getTipColor, handleEvent, imageUpdate, inLineSegment, leave, paint, pick,
placeNodeOnGraph, placeNodeOnScreen, point, removeEdge,
Trang 20setSpringConstant, setThreshold, setTipColor, showControlPanel, start, stop, update.
LabelPredicate, connected, disconnected, equals, getLabels,
getOrTerms, shouldActOn, shouldVisit
getURLNegPattern, getURLPattern, setHTMLNegPattern,
setHTMLPattern, setLabels, setOrTerms, setScript,
setTextNegPattern, setTextPattern, setURLNegPattern,
setURLPattern
Class LinkFeatureChoice
Trang 21isLocalURL, makeDir, makeTemporaryFile, openConnection,
readFile, readWriteFile, writeFile
Trang 22getTitleNegPattern, getTitlePattern, getURLNegPattern,
getURLPattern, setHTMLNegPattern, setHTMLPattern, setLabels, setOrTerms, setScript, setTextNegPattern, setTextPattern,
setTitleNegPattern, setTitlePattern, setURLNegPattern,
Trang 24Gồm các hàm :
WebGraph, add, addLinkViewListener, clear, cleared, crawled,
doubleClick, findEdge, findNode, findParent, fireEvent, getIcon, getSelectedLink, getTip, handleEvent, monitor, paused,
removeLinkViewListener, setErrorIcon, setIcon, setLinkFilter,
setLinkIcon, setNodeRendering, setPageIcon, setRetrievingIcon, shouldDisplay, showControlPanel, started, stopped, timedOut, update,updateClosure
stopped, timedOut, update, updateClosure
Class Workbench extends Panel implements CrawlListener.
Trang 25Chương 3 : Hướng phát triển trong tương lai.
3.1 Một số vấn đề gặp phải khi sử dụng websphinx.
WebSPHINX được thiết kế cho người sử dụng web tiên tiến và các lập trình Java, những người muốn thu thập thông tin trên là một phần nhỏ của trang web (chẳng hạn như một trang web duy nhất) tự động
WebSPHINX không được thiết kế cho rất lớn thu thập như thế Công
cụ tìm kiếm thường sử dụng các trình thu thập phân phối đang chạy trên trang trại của máy tính với một ống mạng lưới chất béo và một hệ thống tập tin phân phối hoặc cơ sở dữ liệu để quản lý biên giới thu thập dữ liệu và lưu trữ dữ liệu trang WebSPHINX được dự định cho sử dụng cá nhân, để thu thập thông tin có lẽ một trăm hay một ngàn trang web
Theo mặc định, WebSPHINX giữ lại tất cả các trang và các liên kết
mà nó đã thu thập thông tin cho đến khi bạn rõ ràng các trình thu thập Điều này có thể sử dụng bộ nhớ một cách nhanh chóng, đặc biệt là nếu bạn đang thu thập nhiều hơn một vài trăm trang Dưới đây là một số thủ thuật để thay đổi giá trị mặc định và giữ cho bộ nhớ dưới sự kiểm soát (Lưu ý rằng nhữngthủ thuật chỉ áp dụng khi bạn đang viết thu thập thông tin của riêng bạn trong Java, không phải khi bạn đang sử dụng Workbench Crawler)
1 Sử dụng Page.discardContent () để ném đi ngăn chặn tham khảo nội dung của một trang khi bạn đang thực hiện với nó, để
nó có thể được khai hoang bởi những người thu gom rác
Phương pháp này bảo tồn mảng của trang web của Liên kết đi, tuy nhiên, vì vậy bạn vẫn sẽ phải thu thập dữ liệu đồ thị nếu bạncần nó
2 Ngắt kết nối các đồ thị thu thập dữ liệu hoàn toàn bằng cách phá vỡ các tài liệu tham khảo giữa các liên kết và các trang, vì vậy mà mỗi trang và liên kết đối tượng có thể được khai hoang một lần thu thập thông tin đã hoàn tất việc truy cập vào Để làmđiều này, hãy gọi page.getOrigin () SetPage (null) bất cứ khi nào bạn đang thực hiện xử lý một trang
3 Một loại sưng lên bộ nhớ gây ra do việc thực hiện các
ja-va.lang.String.substring () Gọi s.substring () không làm cho
Trang 26của một trang web 10KB, bạn đang giữ một tham chiếu đến toàn bộ các 10KB Nếu bạn cần phải gọi chuỗi con () trên nội dung trang web và muốn để giữ cho các chuỗi xung quanh, nhưng không phải là trang ban đầu, bạn nên tạo một bản sao của chuỗi bằng cách sử dụng String mới (s.toCharArray ())
4. Nếu vẫn thất bại, và bạn đang sử dụng JDK của Sun, bạn có thể
sử dụng tùy chọn-mx (được gọi là-Xmx trong JDK gần đây) để tăng giới hạn tối đa của bộ nhớ heap
WebSPHINX sử dụng được xây dựng trong các lớp học Java URL và URLConnection để lấy các trang web Nếu bạn đang chạy Workbench bánh xích bên trong trình duyệt, điều đó có nghĩa là thu thập thông tin của bạn sử dụng proxy, xác thực, cookies, và người sử dụng đại lý của trình duyệt, vì vậy nếu bạn có thể truy cập các trang web bằng tay, sau đó bạn có thể thu thập dữ liệu Nếu bạn đang chạy thu thập thông tin của bạn từ dòng lệnh, tuynhiên, bạn sẽ phải cấu hình Java để thiết lập proxy, chứng thực của bạn, sử dụng các đại lý, và vv
3.2 Hướng phát triển.
Trong thời gian tới em sẽ nghiên cứu và phát triển để hoàn thiện hơn nữa Websphinx Cụ thể là sẽ hoàn thiện phần thu thập dữ liệu ở chế độ nângcao cũng như sẽ làm cho chương trình có thể thu thập dữ liệu ở một vùng rộng lớn hơn hiện tại
Trang 27Kết Luận
Do lần đầu thực hiện chương trình nên còn nhiều bỡ ngỡ, cũng như thời gian không cho phép nên chương trình còn nhiều hạn chế, chưa đáp ứng được yêu cầu đề ra Tuy nhiên dưới sự hướng dẫn tận tình của th.s Nguyễn Quan Minh, chương trình phần nào cũng đạt được những kết quả nhất định Qua lần thực hiện đề tài lần này em đã tích lũy được nhiều kinh nghiệm cũng như kiến thức quý báu để trong lần thực hiện đề tài tiếp theo sẽkhông còn bỡ ngỡ và chương trình làm ra cũng đáp ứng yêu cầu tốt hơn
Một lần nữa em vô cùng cảm ơn th.s Nguyễn Quan Minh đã hướng dẫn chúng em trong suốt thời gian vừa qua
Hà Nội, ngày 7 tháng 12 năm 2011
Trang 28Tài liệu tham khảo
Chương trình được tham khảo tại trang web :
http://www.cs.cmu.edu/~rcm/websphinx/#download