1. Trang chủ
  2. » Công Nghệ Thông Tin

ĐATN đề tài nghiên cứu trích rút nội dung trang web và xây dựng website tổng hợp thông tin (Có link source code))

57 66 2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 57
Dung lượng 891,6 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Tài liệu có đầy đủ Bản word, powerpoint và source code của đề tài đồ án tốt nghiệp. Đề tài Nghiên cứu việc trích rút nội dung trang web và ứng dụng để xây dựng website tổng hợp thông tinLƯU Ý : Do kích thước source code lớn không tải lên được, bạn vui lòng GỬI TIN NHẮN để mình GỬI LINK DRIVER download source code. Thanks

Trang 1

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

KHOA CÔNG NGHỆ THÔNG TIN

Trang 2

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

KHOA CÔNG NGHỆ THÔNG TIN

THÁI NGUYÊN, NĂM 2020

Trang 3

LỜI CẢM ƠN

Sau khoảng thời gian được học tập và rèn luyện tại trường Đại Học Côngnghệ thông tin và Truyền thông – Đại học Thái Nguyên, dưới sự chỉ bảo tận tìnhcủa các thầy cô trong các phòng khoa chuyên môn, nay chúng em đã gần hết khoáhọc, đang trong giai đoạn hoàn thành luận văn tốt nghiệp và sắp sửa trở thành mộtngười kỹ sư công nghệ thông tin có thể góp sức xây dựng cho sự phát triển xã hội,đất nước Để được như ngày hôm nay chúng em vô cùng biết ơn tất cả các thầy côtrong Khoa Công nghệ thông tin và các thầy cô trong bộ môn Khoa học máy tính đãtận tình giảng dạy, hướng dẫn, truyền đạt những kiến thức, kinh nghiệm quý báucho chúng em trong khoảng thời gian được học tập, rèn luyện tại trường Thầy TS.Đàm Thanh Phương, người đã tận tình hướng dẫn, định hướng, giúp đỡ và chỉ dạychúng em rất nhiều trong suốt quá trình thực hiện luận văn tốt nghiệp Các anh chị

em sinh viên các khoá đã cùng chúng em học tập và chia sẻ kiến thức tiếp thu trongquá trình theo học tại trường Đồng thời chúng em cũng xin gửi lời cảm ơn đến cha

mẹ, anh chị, bạn bè những người luôn đứng bên cạnh chúng em để động viên, an ủi,ủng hộ về vật chất lẫn tinh thần trong suốt khoảng thời gian qua

Với lòng biết ơn chân thành, chúng em xin gởi lời chúc sức khoẻ và những gìtốt đẹp nhất đến các thầy cô trong khoa, trong nhà trường, những bậc cha mẹ, anhchị đáng kính và toàn thể các bạn bè đã và đang học tại trường Đại học Công nghệthông tin và Truyền thông Thái Nguyên

Phạm Thị Liên

Trang 4

TÓM TẮT LUẬN VĂN

Với sự bùng nổ về công nghệ thông tin những năm gần đây, đặc biệt là sựphát triển mạnh mẽ như vũ bão của trí tuệ nhận tạo và machine learning, cuộc sốngcủa con người đã càng ngày càng trở nên phong phú và đa dạng hơn Kho tàng trithức của Internet đã làm thay đổi đáng kể nhiều lĩnh vực, từ học tập, nghiên cứu chođến kinh doanh và thương mại Tuy nhiên con người vẫn không dừng lại, họ luôn cónhững khát khao tìm tòi và phát triển, đặc biệt là đối với chiếc máy tính Chiếc máytính cá nhân đã được ra đời để trợ giúp cho con người, và họ vẫn luôn tìm cách làmcho nó có thể hỗ trợ được cho con người nhiều hơn nữa, thậm chí là làm thay chocon người

Trong thực tế hiện nay, lượng thông tin trên Internet càng ngày càng khổng

lồ, điều này khiến việc sử dụng World Wide Web để khai thác thông tin hữu ích,phục vụ cho các mục đích cá nhân luôn có những khó khăn nhất định của nó Nhất

là đối với những mục đích đòi hỏi phải có sự thu thập thông tin với khối lượng lớntrên Web, chẳng hạn một người muốn tổng hợp thông tin của các bài báo có cùngmột chủ đề (cùng một tác giả…) từ nhiều website thông tin khác nhau Những côngviệc như thế này nếu được thực hiện thủ công bằng sức người thì sẽ mất rất nhiềuthời gian, công sức, và chúng cũng khá tẻ nhạt do tính chất phải lặp đi lặp một vàithao tác của việc thu thập dữ liệu

Đề tài Luận Văn Tốt Nghiệp này sẽ cố gắng giải quyết vấn đề nêu trên, bằngcách thu thập dữ liệu từ trang web tinhte.vn sau đó xây dựng một website tổng hợpthông tin đã thu thập từ trang báo này và phân loại chúng thành các danh mục.Website này giúp bạn đọc có cái nhìn tổng quát hơn về một chủ đề mà không cầnphải tìm kiếm vất vả

Trang 5

MỤC LỤC

LỜI CẢM ƠN i

TÓM TẮT LUẬN VĂN ii

MỤC LỤC iii

DANH MỤC HÌNH v

CHƯƠNG I CƠ SỞ LÝ THUYẾT 1

1.1 Tìm hiểu và phân tích sơ bộ 1

1.1.1 World Wide Web 1

1.1.2 Thu thập dữ liệu 4

1.1.3 Web crawler 4

1.1.4 Web scraper 6

1.2 Các kiến thức nền tảng 7

1.2.2 XML 8

1.2.3 XHTML 9

1.3 Các công nghệ liên quan 10

1.3.1 XPath 10

1.3.2 Thư viện HtmlAgilityPack 15

1.3.3 Thư viện Quartz.NET trong ASP.NET 16

1.4 Mô hình MVC 20

1.4.1 Tổng quan về mô hình MVC 20

1.4.2 Mô hình MVC trong ASP.NET 23

CHƯƠNG II – TÌM HIỂU VỀ CÁCH THỨC THU THẬP DỮ LIỆU WEBSITE 26 2.1 Giới thiệu về trình thu thập Web 26

2.2 Cách xây dựng một hạ tầng thu thập 27

2.2.1 Frontier 28

2.2.2 Lược sử và kho lưu trữ trang 30

2.2.3 Cách lấy trang 30

2.2.4 Bóc tách trang 31

2.3 Các chiến lược thu thập dữ liệu 34

2.3.2 Chiến lược thu thập dữ liệu theo chiều rộng 35

Trang 6

2.3.4 Chiến lược thu thập dữ liệu theo lựa chọn tốt nhất ngây thơ 36

CHƯƠNG 3 PHÂN TÍCH ĐỀ TÀI 39

3.1 Bài toán thu thập dữ liệu từ website tinhte.vn 39

3.1.1 Cấu trúc bài viết trong trang báo tinhte.vn 39

3.1.2 Bài toán 40

3.1.3 Giải pháp 42

3.2 Xây dựng website để tổng hợp thông tin 44

3.2.1 Thiết kế 44

3.2.2 Cấu trúc cơ sở dữ liệu 44

CHƯƠNG IV – KẾT LUẬN 46

4.1 Các kết quả đã đạt được 46

4.2 Hướng phát triển của đề tài 46

TÀI LIỆU THAM KHẢO 47

Trang 7

DANH MỤC HÌNH

Hình 1-1: Word Wide Web 1

Hình 1-2: Sơ đồ hoạt động của một web crawler đơn giản 5

Hình 1-3: Phần tử HTML ở dạng tổng quát 7

Hình 1-4: Ví dụ tài liệu XML có cấu trúc đầy đủ 9

Hình 1-5: Biểu diễn Xpath dưới dạng cây 12

Hình 1-6: Đoạn code HTML 13

Hình 1-7: Biểu thức Xpath đơn giản 13

Hình 1-8: Các thành phần của mô hình MVC 21

Hình 1-9: Sự tương tác của các thành phần trong mô hình MVC 22

Hình 1-10: Nền tảng ASP.NET MVC 24

Hình 2-1: Một vòng thu thập web cơ bản 26

Hình 2-2: Mô hình cây tương ứng với một mã nguồn HTML 33

Hình 3-1: Giao diện website tinhte.vn 39

Hình 3-2: Cấu trúc chung của một bài báo 40

Trang 8

CHƯƠNG I CƠ SỞ LÝ THUYẾT 1.1 Tìm hiểu và phân tích sơ bộ

1.1.1 World Wide Web

1.1.1.1 Khái niệm

Hình 1-1: Word Wide Web

World Wide Web (www hay gọi tắt là Web) là một ứng dụng phổ biến vàphát triển mạnh mẽ nhất của Internet hiện nay World Wide Web là một mạng lướibao gồm các tài liệu siêu văn bản (hypertext) được đặt trên các máy tính nằm trongmạng Internet Các siêu văn bản này có khả năng liên kết lẫn nhau thông qua cácsiêu liên kết (hyperlink) Sử dụng một trình duyệt web (web browser), con người cóthể xem được các trang web (website, cũng chính là một siêu văn bản) trên mànhình máy vi tính, nội dung các trang web có thể có chữ, hình ảnh, video, thậm chí

có thể tương tác với người sử dụng thông qua các thiết bị như bàn phím, chuột.Cũng chính nhờ các hyperlink mà các trang web có thể liên kết được với nhau thôngqua chỉ một cú click chuột, đây là khả năng đem lại sự mở rộng vô cùng lớn choworld wide web

Nội dung các trang web chủ yếu được viết bằng ngôn ngữ HTML hoặcXHTML Khi muốn truy cập một trang web, trình duyệt web sẽ gửi yêu cầu đến

Trang 9

máy chủ (web server) chứa trang web đó Máy chủ sẽ hồi đáp bằng nội dung trangweb được yêu cầu trong trường hợp trang web đó thật sự tồn tại trên máy chủ vàđược cho phép truy cập Cả hai quá trình yêu cầu và hồi đáp này đều được thực hiệndựa trên giao thức HTTP (Hyper Text Transfer Protocol) Nội dung các trang web

có thể là văn bản tĩnh (static web page – trang web tĩnh) hoặc cũng có thể được sinh

ra bởi các web server ứng với mỗi lượt yêu cầu, các yêu cầu khác nhau đến cùngmột trang web có thể nhận được các nội dung khác nhau (dynamic web page – trangweb động)

Nhiều nghiên cứu đã cho thấy phần lớn nội dung trên Web đều là các nộidung động Một trang web động cũng có thể có hai kiểu: động về nội dung(dynamic content) và động về hình thức thể hiện (dynamic appearance) Nhữngtrang web động về hình thức thể hiện có thể chỉ chứa nội dung tĩnh, nhưng có chứanhững đoạn mã chạy ở máy khách, những đoạn mã này có thể làm thay đổi sự thểhiện của trang web (màu sắc, kích cỡ …)

a) Phân loại dựa vào sự thể hiện của tính động

Theo thời gian (temporal dynamism): đây là những trang web mà nội dungcủa chúng có thể được thay đổi, cập nhật theo thời gian Điều này đồng nghĩa vớiviệc: các yêu cầu đến cùng một trang web, khi được gửi ở hai thời điểm khác nhau

có thể sẽ nhận được hai nội dung khác nhau

Trang 10

Theo máy khách (client-based dynamism): những trang web có khả năng tùybiến theo người sử dụng (client) sẽ được xếp vào mục này Ví dụ một trang tin tứctổng hợp có khả năng chọn lọc các tin tức khác nhau, tùy thuộc vào sở thích củangười sử dụng đang đăng nhập Những trang kiểu này thường không thể trực tiếptruy xuất vào được mà phải vượt qua một bước xác thực danh tính (authentication).

Theo truy vấn (input dynamism): đây là những trang có nội dung phụ thuộcvào truy vấn của người sử dụng Một ví dụ điển hình là những trang có các mẫunhập liệu (form), chẳng hạn một trường nhập liệu để tìm kiếm một hoặc nhiều mónhàng trong cơ sở dữ liệu của trang web Những trang kiểu này cũng không luônluôn truy xuất trực tiếp được (tùy thuộc vào phương thức truyền các tham số GEThoặc POST, các trang kết quả nhận được cũng thường có số lượng rất lớn (tùy thuộc

số tổ hợp của các tham số truy vấn) Đây cũng thường là những trang web khôngthể crawl được hoàn toàn bởi các crawler, và được gọi là Web ẩn (hidden Web,deep Web, invisible Web)

b) Phân loại dựa vào cách thức tạo ra tính động

Thực thi các chương trình nằm trên máy chủ (server-side programs): Trong

kỹ thuật này, một chương trình sẽ được thực thi trên máy chủ và sinh ra toàn bộ nộidung HTML của trang web, sau đó được gửi đến máy khách yêu cầu Ví dụ tiêubiểu cho loại này là CGI hoặc Java Servlet Những chương trình phía máy chủ nàycũng thường được dùng để xử lý các truy vấn từ người sử dụng

Nhúng mã với sự thực thi phía máy chủ (embedded code with server-sideexecution): các trang web động sẽ chứa cả nội dung HTML tĩnh cùng với các đoạn

mã được nhúng vào cùng với HTML Khi một yêu cầu được nhận, các đoạn mãnhúng này sẽ được thực thi trên máy chủ và sẽ sinh ra các đoạn code HTML thaythế cho chúng Kỹ thuật này khác kỹ thuật trên ở chỗ không phải toàn bộ mà chỉmột phần nội dung HTML được sinh động Các mã nhúng này có thể là PHP, JavaScriplet, ASP hoặc các mã server-side khác

Nhúng mã với sự thực thi phía máy khách (có thể có cả sự thực thi ở phíamáy chủ) (embedded code with client-side execution): Với kỹ thuật này thì các

Trang 11

đoạn mã được nhúng không chạy trên server mà chúng được máy khách tải về vàđược thực thi trên máy khách Nếu mã chỉ chạy trên máy khách thì đó có thể làJavaScript, Java Applet hoặc Flash Nếu vừa có sự thực thi ở máy khách và cả ởmáy chủ thì đó chính là Ajax, trong trường hợp này mã clien-side có thể trao đổithông tin với server thông qua một đối tượng đặc biệt là XMLHttpRequest để có thểthay đổi nội dung trang web một cách động mà không cần load trang web mới.

1.1.2 Thu thập dữ liệu

Khái niệm

Thu thập nguyên nghĩa là tìm kiếm, góp nhặt và tập hợp lại Thu thập dữ liệu

là quá trình tập hợp nhiều thông tin theo những tiêu chí cụ thể nhằm làm rõ nhữngvấn đề, nội dung liên quan đến lĩnh vực nhất định Thu thập dữ liệu là quá trình xácđịnh nhu cầu thông tin, tìm nguồn thông tin, thực hiện tập hợp thông tin theo yêucầu nhằm đáp ứng mục tiêu đã được định trước

Đặc điểm

Thu thập dữ liệu là hoạt động có tính mục đích Quá trình thu thập dữ liệuphải giải đáp cụ thể các câu hỏi: Dữ liệu này thu thập để làm gì, phục vụ cho côngviệc gì, liên quan đến những khía cạnh nào của vấn đề? Thu thập dữ liệu có tính đadạng về phương pháp, cách thức Tùy theo yêu cầu về thông tin, nguồn lực mà cóthể áp dụng các phương pháp, cách thức thu thập thông tin cho phù hợp

Thu thập dữ liệu có thể tìm kiếm từ các nguồn, kênh thông tin khác nhau.Mỗi kênh thông tin có những ưu điểm và nhược điểm riêng, phù hợp với mỗi loạithông tin cần thu thập Việc lựa chọn nguồn thông tin thích hợp bảo đảm hiệu quảquá trình thu thập và chất lượng của thông tin

Thu thập dữ liệu là một quá trình liên tục, nhằm bổ sung, hoàn chỉnh thôngtin cần thiết Quá trình thu thập chịu tác động của nhiều nhân tố về kỹ năng thu thậpthông tin, kỹ năng sử dụng các phương pháp, cách thức thu thập thông tin

1.1.3 Web crawler

Một web crawler là một chương trình máy tính có thể “duyệt web” một cách

Trang 12

trình nên quá trình “duyệt web” của các web crawler không hoàn toàn giống với quátrình duyệt web của con người (web crawler phải sử dụng các phương thức dựa trênHTTP trực tiếp chứ không thông qua web browser như con người).

Các web crawler thường bắt đầu với một danh sách URL của các web page

để ghé thăm đầu tiên Khi ghé thăm một URL, crawler sẽ đọc nội dung web page,tìm tất cả các hyperlink có trong web page đó và đưa các URL được trỏ tới bới cáchyperlink đó vào danh sách URL Dựa vào danh sách URL này, crawler lại tiếp tụcquá trình duyệt đệ quy để ghé thăm tất cả các URL chưa được duyệt đến Quá trìnhnày được gọi là web crawling hoặc là web spidering, các web crawler còn được gọi

là các robot (bot) hoặc nhện web (web spider) Thường thì các crawler được tạo ra

để phục vụ cho một mục đích, tác vụ nào đó Ví dụ các máy tìm kiếm (searchengine) sử dụng crawler để tải dữ liệu các web page, các web page này sau đó đượcsearch engine đánh chỉ mục để có thể cho kết quả nhanh hơn khi được tìm kiếm

Về bản chất, crawl web data chính là quá trình duyệt đệ quy một đồ thị cây

có các node là các web page Tùy thuộc vào chiến lược của crawler, các node có thểđược duyệt theo chiều sâu hoặc duyệt theo chiều rộng Trong thực tế, quá trìnhcrawling web sẽ phải đối diện với rất nhiều vấn đề khó khăn như: kích thước khổng

lồ của world wide web, các trang web HTML được viết không chuẩn, hạn chế ghéthăm một URL đã được ghé thăm trước đó, các trang web động, nội dung các trangweb được cập nhật thường xuyên v…

Trang 13

Hình 1-2: Sơ đồ hoạt động của một web crawler đơn giản

Trang 14

1.1.4 Web scraper

Các trang web chủ yếu được viết bằng các ngôn ngữ đánh dấu như HTML,XHTML và được nhắm đến đối tượng sử dụng là con người chứ không phải máytính Các trang web lại chứa đựng nhiều thông tin có ích mà con người có thể muốnthu thập và lưu trữ lại, chính vì thế mà các web scraper được ra đời Web Scraper làmột thuật ngữ để chỉ các phần mềm có khả năng bóc tách và trích xuất thông tin

chứa trên các web page một cách tự động Công việc này được gọi là web scraping, web harvesting hoặc web data extraction Các web scraper khác với web crawler ở

chỗ, trong khi web crawler tập trung vào việc duyệt các trang web thông qua cácliên kết hyperlink, thì web scraper lại tập trung vào việc chuyển đổi nội dung khôngcấu trúc của các trang web (chủ yếu được viết bằng HTML) sang thành nội dung cócấu trúc, sau đó bóc tách, trích xuất phần thông tin mong muốn và lưu trữ lại vàocác cơ sở dữ liệu hoặc spreadsheet Các web scraper cũng có thể thực hiện thêm cáccông đoạn phân tích dữ liệu sau khi đã trích xuất được để phục vụ cho một mụcđích nào đó Một số ứng dụng của web scraping bao gồm: so sánh giá cả thị trườngtrực tuyến, nghiên cứu thị trường, thu thập thông tin để thống kê, theo dõi thông tinthời tiết trên các website dự báo thời tiết, tổng hợp tin tức từ nhiều website v.v…Một số kỹ thuật được sử dụng trong web scraping có thể kể ra như:

 So trùng: một kỹ thuật đơn giản nhưng khá hiệu quả để tìm kiếm các phầnnội dung chữ có sự tương đồng với nhau (do nội dung trang web chủ yếu là

ở dạng ký tự) Kỹ thuật này thường sử dụng regular expression (biểu thứcchính quy) để so trùng và tìm kiếm

 Lập trình HTTP: ta có thể lấy được nội dung trang web bằng cách gửi mộtyêu cầu HTTP đến web server, cũng giống như cách web browser làm Đâycũng là một kỹ thuật được sử dụng bởi các web crawler

 Phân tích cấu trúc DOM: phân tích nội dung HTML của web page và xâydựng một cây DOM (Document Object Model), giúp scraper có thể duyệtcác node trên cây này và chỉ lấy ra phần nội dung mà nó cần

Trang 15

1.2 Các kiến thức nền tảng

1.2.1 HTML

HTML (HyperText Markup Language – ngôn ngữ đánh dấu siêu văn bản) làmột ngôn ngữ đánh dấu được thiết kế ra để tạo nên các trang web HTML được xemnhư là một ứng dụng của SGML (Standard Generalized Markup Language – mộtchuẩn ISO định nghĩa các ngôn ngữ đánh dấu văn bản tổng quát) HTML được tổchức World Wide Web Consortium (W3C) duy trì và là ngôn ngữ đánh dấu cốt lõicủa World Wide Web Tuy nhiên HTML hiện không còn được phát triển tiếp màngười ta đã thay thế nó bằng XHTML – một chuẩn HTML mở rộng dựa trên XML

và có cú pháp chặt chẽ hơn HTML Mặc dù vậy nhưng phần lớn các trang web hiệnnay vẫn được viết bằng HTML, bởi nhiều nguyên nhân khác nhau (sử dụng cáccông cụ soạn thảo HTML cũ, người viết code ngại thay đổi v.v…)

Một tài liệu HTML được tạo nên bởi các phần tử HTML Một cách tổngquát, một phần tử HTML bao gồm 3 thành phần: một cặp thẻ (tags) gồm một thẻ bắtđầu và một thẻ kết thúc, các thuộc tính (nằm trong thẻ bắt đầu), và toàn bộ phần ký

tự, hình ảnh, nội dung thông tin sẽ được hiển thị lên màn hình Một phần tử HTML

là mọi thứ nằm giữa hai thẻ đầu cuối, tính cả hai thẻ này Một thẻ HTML đơn giản

là một từ khóa được đặt giữa một cặp hai dấu bé hơn (<) và lớn hơn (>) Thẻ đóngcủa một phần tử HTML luôn có một ký tự “/” ngay sau ký tự “<” Sau đây là một ví

dụ của một phần tử HTML ở dạng tổng quát nhất:

Hình 1-3: Phần tử HTML ở dạng tổng quát

Có bốn loại phần tử đánh dấu trong HTML:

 Đánh dấu có cấu trúc miêu tả mục đích của phần văn bản (ví dụ,

<h1>Football</h1> sẽ điều khiển phần mềm đọc hiển thị “Football” là tiêu

đề cấp một)

 Đánh dấu trình bày miêu tả phần hiện hình trực quan của phần văn bản bất kểchức năng của nó là gì (ví dụ <b>in đậm</b> sẽ hiển thị thành in đậm)

Trang 16

 Đánh dấu liên kết ngoài chứa phần liên kết từ trang này đến trang kia, đâychính là các phần tử thể hiện các liên kết hyperlink (ví dụ <a href =

“http://www.ictu.edu.vn/”>Đại học Công nghệ thông tin và Truyền thôngThái Nguyên</a> sẽ hiển thị cụm từ “Đại học Công nghệ thông tin vàTruyền thông Thái Nguyên” như một liên kết ngoài đến websitewww.ictu.edu.vn)

 Các phần tử thành phần điều khiển giúp tạo ra các đối tượng điều khiển nhưcác nút bấm, các ô textbox để nhập liệu

HTML là ngôn ngữ không phân biệt hoa thường (hai thẻ <td> và <TD> đều

là một) Các phần tử HTML cần có một thẻ mở và một thẻ đóng, tuy nhiên điều nàykhông luôn luôn đúng, có nhiều phần tử không cần thẻ đóng, ví dụ các thẻ<br>,

<hr> và <li> Ngoài ra khi lồng nhau, các phần tử HTML cũng không cần thiết phảilồng nhau theo đúng thứ tự (tức là thẻ nào mở trước thì phải đóng sau) ví dụ sau làhợp lệ trong HTML:

Sự lồng nhau không đúng thứ tự của các phần tử HTML được gọi là overlapping(phủ lên nhau), mặc dù điều này không được phép trong đặc tả SGML, nhưng lạiđược chấp nhận bởi hầu hết các trình duyệt hiện nay

Từ các đặc điểm trên ta có thể nhận thấy HTML không phải là một ngôn ngữ có

cú pháp chặt chẽ, các đặc điểm như không cần đóng thẻ hoặc không cần lồng nhauđúng thứ tự sẽ là các trở ngại cho công việc đọc và phân tích văn bản HTML(HTML parsing), đặc biệt nếu sử dụng phương pháp tìm kiếm so trùng Chính vìvậy, chúng ta cần phải chuyển đổi nội dung viết bằng HTML sang một định dạngngôn ngữ khác có sự chặt chẽ hơn về cú pháp, điều này sẽ đem lại thuận lợi hơn choquá trình xử lý về sau Một ngôn ngữ đánh dấu được định nghĩa ra để thay thế choHTML đó chính là XHTML

1.2.2 XML

Trang 17

XML (Extensible Markup Language – ngôn ngữ đánh dấu mở rộng) là mộtngôn ngữ đánh dấu mà người sử dụng có thể tự tạo ra các thẻ riêng của mình Giốngnhư HTML, XML cũng được dựa trên SGML Tuy nhiên, XML được thiết kế nhằmmục đích truyền tải và lưu trữ thông tin, trong khi HTML tập trung vào việc thểhiện thông tin đó như thế nào Về tính cấu trúc của nội dung, XML có thể dùng đểđịnh nghĩa các cấu trúc ngẫu nhiên tùy ý trong khi HTML hoàn toàn bị giới hạn.

Ví dụ của một tài liệu XML đầy đủ:

Hình 1-4: Ví dụ tài liệu XML có cấu trúc đầy đủ

1.2.3 XHTML

XHTML (Extensible HyperText Markup Language) là một ngôn ngữ đánh dấu

có cùng các khả năng như HTML, nhưng có cú pháp chặt chẽ hơn XHTML đượcxây dựng dựa trên XML và được cho rằng sẽ là ngôn ngữ thay thế cho ngôn ngữHTML trong tương lai

Theo tổ chức W3C, khác biệt giữa XHTML 1.0 và HTML 4 về cơ bản thìXHTML phải là một tài liệu XML chuẩn (well-formed), trong khi HTML khôngcần phải thỏa điều kiện này Cụ thể, một số điểm khác biệt như sau:

1.2.3.1 Tính chuẩn của một tài liệu XML (well-formed)

XHTML đòi hỏi các tài liệu viết bằng XHTML phải có tính chất well-formed,

có nghĩa là tất cả các thẻ trong tài liệu đều phải có thẻ đóng tương ứng (ngoại trừcác thẻ rỗng) và các phần tử phải lồng nhau một cách đúng thứ tự (thẻ nào mở trướcthì phải đóng sau) Ví dụ:

Đúng: các phần tử lồng nhau đúng thứ tự

Trang 18

Sai: các phần tử lồng nhau không đúng (overlap).

a) Tên các phần tử và tên các thuộc tính của phần tử phải ở dạng chữ in thường

XHTML thừa kế các đặc tính của XML, trong đó có sự phân biệt chữ hoachữ thường (ví dụ <td> và <TD> là hai thẻ khác nhau), vì vậy để chuẩn hóa, tên củatất cả các phần tử cũng như tất cả các thuộc tính của phần tử cần được viết dướidạng chữ thường

b) Các thẻ không rỗng bắt buộc phải có thẻ đóng

Trong HTML 4, một số phần tử được phép viết không cần thẻ đóng Tuynhiên XML không cho phép điều này Tất cả các phần tử đều phải có thẻ đóngtương ứng ngoại trừ các phần tử được định nghĩa trong DTD là EMPTY (các phần

tử này có thể có thẻ đóng đầy đủ hoặc được viết ở dạng tắt) Ví dụ:

Đúng: các phần tử đều có thẻ đóng

Sai: các phần tử không có thẻ đóng

c) Các thuộc tính luôn phải ghi rõ giá trị

Các thuộc tính của phần tử phải được viết dưới dạng tên = “giá trị” đầy đủ Ví dụ:

Trang 19

Một tài liệu XML được xem như là một sự thể hiện của cấu trúc phân cấp ở dạngcây của nhiều phần tử, mỗi phần tử được xem như là một node của cây

Giả sử có đoạn tài liệu XML như sau:

Với ví dụ này khi mở với trình duyệt IE chúng ta sẽ có kết quả sau:

Như vậy chúng ta thấy trên trình duyệt sẽ hiển thị y nguyên tài liệu gốc Vậylàm cách nào để chúng ta có thể đi lại trên các phần tử của tài liệu XML để trích ranhững dữ liệu mà chúng ta cần thiết

Trang 20

Để đáp ứng điều này người ta thiết kế ra một ngôn ngữ Xpath Xpath có mộtvai trò quan trọng trong việc trao đổi dữ liệu giữa các máy tính hay giữa các chươngtrình ứng dụng vì nó cho chúng ta sàng lọc các dữ liệu mà ta mong muốn.

Xpath xem XML như một cây, với ví dụ trên sẽ được biểu diễn dưới dạngcây sau:

Hình 1-5: Biểu diễn Xpath dưới dạng cây

XPath đem lại khả năng duyệt các node trên cây hoặc lựa chọn chúng theocác tiêu chí nào đó, dựa trên các mối quan hệ như cha - con, tổ tiên - con cháu Mộtbiểu thức XPath (Xpath expression) có thể chọn một node hoặc một tập hợp cácnode, hoặc nó có thể trả lại một giá trị dữ liệu dựa trên một hoặc nhiều node trongtài liệu XPath hiện có 2 phiên bản là XPath 1.0 và XPath 2.0

1.3.1.1 Cú pháp và ngữ nghĩa

Một biểu thức XPath có thể là một đường dẫn vị trí (location path), đây làloại biểu thức quan trọng nhất trong XPath Một location path bao gồm một hoặcnhiều bước (location step) Mỗi bước gồm có 3 thành phần sau:

 Một axis specifier (chỉ định hướng)

Trang 21

 Một node test

 Một hoặc nhiều predicate

Biểu thức XPath luôn được đánh giá một cách tương đối với một node ngữ cảnh(context node) Một chỉ định hướng (axis specifier) “child” sẽ cho biết hướng dichuyển (để tìm kiếm) sẽ là hướng đến các node con của node ngữ cảnh Node test

và predicate sẽ dùng để lọc các node thu được một cách chi tiết hơn Ví dụ node test

“A” đòi hỏi tất cả các node nhận được phải có tên là “A” Một predicate dùng để chỉ

ra các node này phải có một số đặc điểm nào đó nữa Cú pháp của biểu thức XPathcũng có thể ở hai dạng: rút gọn và đầy đủ

a) Cú pháp rút gọn

Ví dụ một tài liệu HTML như sau:

Hình 1-6: Đoạn code HTML

Một biểu thức XPath đơn giản:

Hình 1-7: Biểu thức Xpath đơn giản

Biểu thức XPath này sử dụng giá trị mặc định của các axis specifier đó là giá trịchild, và các step của biểu thức đều không sử dụng predicate Biểu thức này chọn racác phần tử C nào mà là con của các phần tử B, và các phần tử B này cũng phải làcon của các phần tử A Cú pháp này của XPath có nét tương đồng với cú pháp củaURI (Uniform Resource Identifier) cũng như cú pháp đường dẫn file của các hệđiều hành Unix

Trang 23

1.3.1.2 Predicate

Một step của biểu thức XPath có thể có nhiều predicate Mỗi predicate cũngđược viết dưới dạng biểu thức và nằm trong cặp ngoặc vuông [ ], các node nhậnđược của biểu thức sẽ phải thỏa điều kiện của các predicate Ví dụa[@href=’help.php’] sẽ chỉ trả về các phần tử có tên là a (trong các node con củanode ngữ cảnh) và có một thuộc tính href với giá trị help.php Các predicate có thểtrả về giá trị boolean, số nguyên, hoặc một tập các node Nếu giá trị trả về củapredicate là số nguyên thì giá trị này được hiểu là vị trí của node cần tìm, ví dụ p[1]trả về phần tử p đầu tiên, p[last()] trả về phần tử p cuối cùng Trong trường hợp trả

về một tập node thì khi tập node khác rỗng giá trị sẽ được hiểu là true, ví dụ p[@id]trả về các node p có thuộc tính id

1.3.1.3 Các hàm và toán tử

XPath 1.0 định nghĩa 4 kiểu dữ liệu: kiểu tập node (node-set), kiểu chuỗi ký

tự (string), kiểu số (number) và kiểu logic (boolean) Các toán tử phổ biến đượcdùng trong XPath:

 Toán tử hội “|“ để tìm hội của hai tập node

 Toán tử logic “and” và “or” (và một hàm not(boolean) để phủ định một biểuthức

boolean)

 Các toán tử cộng trừ nhân chi “+”, “-“, “*”, “div” và “mod”

 Các toán tử so sánh “=”, “!=”, “<”, “>”, “<=”, “>=” Các hàm phổ biến trongthự viện hàm của XPath 1.0:

 position(): trả về giá trị kiểu số thể hiện vị trí của node trong một chuỗi cácnode

 count(node-set): trả về số node có trong node-set

 string(object?): chuyển bất kỳ kiểu dữ liệu nào thành kiểu chuỗi Nếu tham

số là kiểu node-set thì hàm này trả về giá trị chuỗi của node đầu tiên trongnode-set (theo thứ tự xuất hiện trong tài liệu)

Trang 24

 true(), false(): trả về các giá trị true, false tương ứng

Một số ví dụ:

 trả về các node item có thuộc tính price lớn hơn hai lần giá trị thuộc tínhdiscount của nó

 trả về các node product có node con comment chứa từ ‘bad’

1.3.2 Thư viện HtmlAgilityPack

Việc xử lý văn bản HTML và trích xuất các phần tử DOM trong văn bảnHTML thường gây cho lập trình viên gặp nhiều khó khăn, một giải pháp mà người

ta hay dùng là dùng regex để tách các đoạn các thẻ trong văn bản HTML, nay chúng

ta có thể sử dụng thư viện HtmlAgilityPack và dùng LINQ để truy vấn sẽ đơn giảnhơn nhiều Đầu tiên ta cần phải download thư viện HtmlAgilityPack sau đó vàovisual studio add file HtmlAgilityPack.dll vào Refercences

Ví dụ về việc trích xuất các phần tử DOM trong văn bản HTML bằng thưviện HtmlAgilityPack:

- Đầu tiên tạo 1 request đến trang http://dantri.com.vn

Trang 25

- Sau khi thực hiện lệnh này mã html sẽ nằm ở biến responseFromServerchúng ta bắt đầu xử lý sử dụng thư viện trên.

Lấy tất cả link có trong trang :

Lấy tất cả thẻ div có class là : fon31mt1

Để lấy được nội dung của đoạn text ta sử dụng thuộc tính InnerHtml trongclass HtmlNode.Để xử lý các truy vấn khác ta sử dụng công nghệ Xpath đã trìnhbày ở phần 1.3.1

1.3.3 Thư viện Quartz.NET trong ASP.NET

Trang 26

Một job là một class Để làm việc với Quartz, nó phải được triển khai từinterface của Quartz là Ijob có một phương thức là Execute Phương thức này địnhnghĩa các logic được thực thi.

message.Body = "Test at " + DateTime.Now;

using (SmtpClient client = new SmtpClient

Trang 27

Phần tiếp theo là demo về scheduler sẽ cài đặt và job với trigger sẽ được tạo

Trang 28

ITrigger trigger = TriggerBuilder.Create().WithDailyTimeIntervalSchedule(s

=>s.WithIntervalInHours(24)

OnEveryDay().StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(0, 0))).Build(); scheduler.ScheduleJob(job, trigger);

Tiếp theo, một trigger được khởi tạo, trigger định nghĩa khi nào job đượcthực thi Trong trường hợp này, scheduler được chỉ định chạy hàng ngày vào nửađêm và sẽ chạy cứ mỗi 24 giờ Nó thực thi hàng ngày và các tùy chọn thực thi cóthể linh hoạt và cho phép đặt lịch theo thời gian thực Đây là ví dụ khác về trigger.ITrigger trigger = TriggerBuilder.Create().WithIdentity("trigger1",

"group1").StartNow().WithSimpleSchedule(x =>

x.WithIntervalInSeconds(10).RepeatForever()).Build();

Trigger được đặt một cái tên và nhóm nó có thể dễ dàng định danh nếu cầntham chiếu trong lập trình Nó được thiết kế để chạy trực tiếp sau mỗi 10 giây chođến khi kết thúc (hoặc bị dừng vì lý do nào đó) Fluent API giúp cho việc tạo trigger

dễ nhìn và dễ hiểu hơn

Cuối cùng, job và trigger được đăng ký với scheduler Tất cả những gì cầnthiết đã sẵn sàng để thực thi Nơi tốt nhất để làm điều này là sự kiệnApplication_Start trong Global.asax, để gọi phương thức JobScheduler.Start đượcthêm vào bên cạnh các tác vụ khởi động khác:

Ngày đăng: 04/03/2021, 22:21

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w