Cách thứ 2 là xây dựng một đội ngũ chuyên đitổng hợp bài từ các trang tin khác trên mạng internet về trang báo mình, cáchnày tuy không tốn kém và phức tạp như cách thứ nhất tuy nhiên cũn
Trang 1Trờng đại học vinh Khoa công nghệ thông tin
Giảng viên hớng dẫn: TS Nguyễn trung hòa
Sinh viên thực hiện : TRịNH VĂN nGọC Lớp : 47K - CNTT
Trang 2LỜI NÓI ĐẦU
Chúng ta ai cũng có nhu cầu tìm hiểu thông tin Có rất nhiều cách để tìmhiểu thông tin, trong đó đọc báo là một cách để thu thập thông tin hiệu quả vànhanh chóng nhất Ngày này với sự phát triển của internet thì việc đọc báo rấttiện lợi và thông tin cập nhập rất nhanh chóng Việc xây dựng một Website tintức không ngoài việc tạo nên một tiện ích cho người đọc báo mà có thể giúp họtiết kiệm thời gian
Tuy nhiên để có được nguồn thông tin thường xuyên cập nhật cho trangtin tức không phải là dễ dàng Có 3 cách thức để duy trì nguồn tin mới trên trangtin của mình Một là xây dựng một đội ngũ chuyên viết bài cho trang tin, cáchnày rất tốn kém và rất phức tạp Cách thứ 2 là xây dựng một đội ngũ chuyên đitổng hợp bài từ các trang tin khác trên mạng internet về trang báo mình, cáchnày tuy không tốn kém và phức tạp như cách thứ nhất tuy nhiên cũng cần cónhân lực và tiền bạc Cách thức thứ 3 là cách mà không cần tới nhân lực và cũngtiêu tốn ít tiền bạc hơn đó là thiết kế một chương trình tổng hợp các tin bài từ cácnguồn trên internet về trang tin của mình để duy trì ngồn tin mới cho trang tincủa mình
Chính từ suy nghĩ này tôi đã mạnh dạn chọn đề tài “Xây dựng trang tin tức
và module lấy tin bài tự động” làm đồ án tốt nghiệp của mình
Đồ án này bao gồm 3 chương:
Chương 1: Tổng quan về đề tài
Nội dung chương này nêu lên lý do, mục đích, yêu cầu, cách tiếp
Trang 3Nội dung của chương tìm hiểu lịch sử hình thành phát triển, sơ lược
về ngôn ngữ PYTHON và framework WEB2PY, cách sử dụngngôn ngữ PYTHON, SQLite trên framework WEB2PY
Chương 3: Thiết kế, cài đặt và giới thiệu sản phẩm
Nội dung của chương viết về thiết kế và cách cài đặt ứng dụng của
đồ án
Trong quá trình học tập và tìm hiểu để thực hiện đồ án tôi đã nhận được sự
hỗ trợ và động viên của các bạn, sự quan tâm giúp đỡ của các thầy cô giáo trong
khoa và đặc biệt là thầy giáo hướng dẫn – TS Nguyễn Trung Hòa Tôi trân
trọng cảm ơn những sự giúp đỡ quý báu đó
Trong quá trình thực hiện, do trình độ và thời gian có hạn, việc lấy thôngtin chính xác còn nhiều hạn chế, do đó khoá luận không thể tránh khỏi những saisót Vì vậy, tôi rất mong nhận được sự quan tâm giúp đỡ, trao đổi, động viên của
các thầy cô để đồ án “Xây dựng trang tin tức và module lấy tin bài tự đông”
ngày một hoàn thiện
Xin trân trọng cảm ơn!
Sinh viên thực hiện:
Hồ Hải Long
Trang 4LỜI NÓI ĐẦU 1
CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI 6
1.1 Lý do chọn đề tài 6
1.2 Mục đích, yêu cầu 7
1.3 Cách tiếp cận đề tài 7
1.4 Phạm vi ứng dụng 8
1.5 Công cụ sử dụng 8
1.6 Bài toán thực tế 8
1.6.1 Đặt vấn đề 8
1.6.2 Bài toán 9
1.6.3 Hướng giải quyết của bài toán 10
1.7 Phân tích 10
1.7.1 Các yêu cầu đối với module lấy tin bài tự động 10
1.7.2 Các yêu cầu hoạt động trên trang web 11
1.7.3 Sơ đồ phân cấp chức năng 12
1.7.4 Sơ đồ luồng dữ liệu 13
1.7.5 Mô hình thực thể và các thuộc tính 16
CHƯƠNG 2: TÌM HIỂU VỀ NGÔN NGỮ PYTHON VÀ FRAMEWORK WEB2PY 24
2.1 Tìm hiểu về ngôn ngữ PYTHON 24
2.1.1 Khái niệm PYTHON 24
2.1.2 Lịch sử phát triển: 25
2.1.3 Các phiên bản nổi tiếng của PYTHON 26
2.1.4 Sơ lược về PYTHON: 27
2.1.4.1 Từ khóa: 27
2.1.4.2 Khối lệnh: 27
2.1.4.3 Trình thông dịch: 28
2.1.4.4 Lệnh và cấu trúc điều khiển: 29
2.1.4.5 Hệ thống kiểu dữ liệu: 29
2.1.4.6 Module : 30
2.1.4.7 Một số tính chất khác: 30
2.2 Web2py framework 32
2.1.1 Giới thiệu về web2py: 32
2.1.2 Đặc điểm của web2py 32
2.1.3 Mô hình MVC: 33
2.1.4 Cơ sở dữ liệu trong web2py: 35
2.1.4.1 Khai báo cơ sở dữ liệu: 35
2.1.4.2 Các kiểu dữ liệu: 36
Trang 53.1.5 Tìm kiếm 41
3.1.6 Trang lấy tin tức 42
3.1.7 Quản lý danh mục báo chí 43
3.1.8 Quản lý danh sách báo chí 43
3.1.9 Quản lý tin tức 44
3.2 Cài đặt 45
KẾT LUẬN 47
TÀI LIỆU THAM KHẢO 48
Trang 6CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI
1.1 Lý do chọn đề tài
Với sự phát triển nhảy vọt của công nghệ thông tin hiện nay,Internet ngày càng giữ vai trò quan trọng trong các lĩnh vực khoa học kĩthuật và đời sống Dĩ nhiên các bạn đã được nghe nói nhiều về Internet,nói một cách đơn giản, Internet là một tập hợp máy tính nối kết với nhau,
là một mạng máy tính toàn cầu mà bất kì ai cũng có thể kết nối bằng máy
PC của họ
Với mạng Internet, tin học thật sự tạo nên một cuộc cách mạng traođổi thông tin trong mọi lĩnh vực văn hóa, xã hội, chính trị, kinh tế Vớicông nghệ Word Wide Web, hay còn gọi là Web sẽ giúp bạn đưa nhữngthông tin mong muốn của mình lên mạng Internet Hay bạn có thể đọcbáo, tìm hiểu thông tin tại nhà mình mà không phải mất nhiều thời gian đimua báo nữa
Trang 7ra ở phần mở đầu thì chúng ta cần một chương trình tổng hợp bài viết từcác tờ báo lớn trên mạng về trang tin của mình để giải quyết vấn đề này.
1.2 Mục đích, yêu cầu
Nghiên cứu về cách thức xây dựng web với ngôn ngữ chính là
SQL và hệ quản trị cơ sở dữ liệu SQLite để xây dựng website tin tức vàmột module hỗ trợ việc tổng hợp tin tức từ các ngồn tin trên mạnginternet Và sau cùng là chạy thử nghiệp trang tin tức trên mạng để phục
vụ bạn đọc
1.3 Cách tiếp cận đề tài
Sự ra đời của Internet, sự phát triển của công nghệ mạng, công nghệphần mềm đã và đang làm thay đổi cách thức tiếp cận và xử lý thông tin.Hiện nay Internet đã trở thành một dịch vụ phổ thông, thậm chí thiết yếu ở
đa số tổ chức, cá nhân Các hoạt động thương mại, kinh doanh, quản lýnhà nước, điều hành công việc đã và đang hoà nhập và môi trườngInternet Chính vì thế ngày nay hầu như tất cả các tòa báo đã có trang tintức điện tử cho mình để phục vụ cho bạn đọc trên mạng internet
Nhu cầu tìm hiểu thông tin, đọc báo cũng ngày càng đa dạng Việcxây dựng một Website tin tức phục vụ nhu cầu trên cũng không ngoài việctạo nên một tiện ích cho người dung internet có thể tiết kiệm thời gian đọcbáo
Nhằm đảm bảo lượng tin tức cập nhật thường xuyên trên trang tincũng là một việc rất quan trọng Việc xây dựng một module lấy tin bài tựđộng cũng nhằm việc mang lại nhiều thông tin mới nhất cho người đọc
Trang tin tức được tạo ra nhằm phục vụ nhu cầu tìm hiểu thông tin
Trang 81.4 Phạm vi ứng dụng
Trang tin tức hoạt động và phục vụ cho nhu cầu tìm hiểu tin tức củatất cả mọi người có nhu cầu tìm hiểu thông tin, đọc báo Trang tin tức sửdụng được trên tất cả các máy tính có Internet Không cần cài đặt thêmứng dụng khác Ngoài ra trang tin tức còn ấp dụng cho các Công ty, tổchức có nhu cầu quảng cáo, thực hiện các chiến dịch khuyến mãi trựctuyến
Trang 9tin, cách này rất tốn kém và rất phức tạp Cách thứ 2 là xây dựng một đội ngũchuyên đi tổng hợp bài từ các trang tin khác về báo mình, cách này tuy khôngtốn kém và phức tạp hơn cách thứ nhất tuy nhiên cũng cần có nhân lực và tiềnbạc Trong đó có một cách thức mà không cần tới nhân lực và cũng tiêu tốn íttiền bạc hơn đó là thiết kế một chương trình tổng hợp các tin bài từ các nguồntrên internet về trang tin của mình để duy trì ngồn tin mới cho trang tin củamình.
Xuất phát từ những yêu cầu đó, tại sao chúng ta không giao việc tổng hợptin tức từ các trang báo khác cho máy tính làm việc Chúng ta sẽ xây dựng mộtmodule đảm nhận việc tổng hợp từ các trang báo lớn trên mạng về trang tin tứccủa mình
1.6.2 Bài toán
Trang tin tức là một website tin được thiết kế với mục đích xây dựng một trang thông tin nhỏ đáp ứng nhu cầu đọc tin tức của mọi người Tại đây mọi người có thể đọc các tin tức mới từ các trang tin tức lớn
Lợi ích của người truy cập trang Website
Website gồm có những nội dung cơ bản sau
chính trị, văn hóa, xã hội, thể thao,…v…v
mạng
Trang 101.6.3 Hướng giải quyết của bài toán
Thông qua ngôn ngữ PYTHON và framework web2py để xây dựngcác trang web, bao gồm Giao diện, Các Module nghiệp vụ Dùng SQLite
để lưu trữ và xử lý các kết nối cơ sở dữ liệu Các hình thức gửi và nhận dữliệu giữa công ty và khách hàng thông qua nền Intranet và Internet
1.7 Phân tích
1.7.1 Các yêu cầu đối với module lấy tin bài tự động
Module lấy tin bài sẽ lấy tin từ các nguồn tin được chỉ định về lưu trữ tại cơ sở dữ liệu ở trang tin của mình Thông tin của một bài viết được lấy về bao gồm: Tiêu đề, đoạn mô tả, và nội dung của bài viết
Trang 11 Lấy được các tin tức từ các nguồn tin đã được chỉ định về lưu trữtại cơ sở dữ liệu của mình.
1.7.2 Các yêu cầu hoạt động trên trang web
Với một bài toán này thì hoạt động của nó bao gồm:
Hoạt động của người xem:
Một người dùng khi họ truy cập vào trang web để đọc tin tức Do
đó để đáp ứng được nhu cầu tối thiểu đó thì trang tin phải cũng cấp cácthong tin cần thiết, có giá trị và hơn thế nữa là phải dễ dàng thao tác,
bố trí hình ảnh và chữ viết phải dễ đọc tạo cảm giác thoải mái
Hoạt động của nhà quản lý:
Một người quản lý website tin tức họ cần phải cập nhật được tin tứcmới, sửa lại được nội dung của tin hay là xóa đi những tin không cầnthiết
Đối với phần lấy tin bài tự động, người quản trị cần phải bổ sungđược các địa chỉ các trang tin ở trên mạng mà mình muốn lấy bài viếtvề
Bổ sung các danh mục tin tức ở một số các trang báo mà mìnhmuốn lấy về Sau khi đã lấy được các tin bài từ các trang báo trênmạng về thì người quản trị cũng cần có chức năng đưa bài báo đó ra tờbáo của mình, sửa bài báo đó nếu cần thiết
Từ những yêu cầu trên ta có sơ đồ chức năng bài toán như sau:
Trang 121.7.3 Sơ đồ phân cấp chức năng
1.7.4 Sơ đồ luồng dữ liệu
Trang 13 Biểu đồ luồng dữ liệu mức dưới đỉnh:
o Quản lý danh mục tin tức:
Trang 14o Quản lý tin tức:
o Tìm kiếm:
Trang 151.7.5 Mô hình thực thể và các thuộc tính
Trang 16Bảng “Crawler_content_type” – Bảng chứa loại nội dung cần được lấy về
T
KIỂU DỮ LIỆU
CHIỀU
CHIỀU
cha
Trang 17Bảng “Crawler_keys” – Bảng chứa từ khóa liên quan tới danh mục
T
KIỂU DỮ LIỆU
CHIỀU
Bảng “Crawler_newspaper_type” – Bảng chứa kiểu báo
T
KIỂU DỮ LIỆU
CHIỀU
Trang 18Bảng “Crawler_newspaper” – Bảng chứa báo
T
KIỂU DỮ LIỆU
CHIỀU
Bảng “Crawler” – Bảng chứa nội dung dữ liệu được lấy về
Trang 19KIỂU DỮ LIỆU
CHIỀU
báo
Bảng “Crawler_contents” – Bảng chứa nội dung chi tiết của bài báo
T
KIỂU DỮ LIỆU
CHIỀU
của bài báo
Bảng “auth_group” – Bảng chứa nhóm người dùng
T
KIỂU DỮ LIỆU
CHIỀU
Trang 20KIỂU DỮ LIỆU
CHIỀU
dùng
Bảng “auth_user” – Bảng chứa người dùng
CHIỀU
dùng
Trang 21KIỂU DỮ LIỆU
CHIỀU
login tài khoản
Bảng “auth_membership” – Bảng liên kết người dùng và nhóm người
dùng
T
KIỂU DỮ LIỆU
CHIỀU
dùng
Trang 22CHƯƠNG 2: TÌM HIỂU VỀ NGÔN NGỮ PYTHON VÀ
FRAMEWORK WEB2PY
2.1 Tìm hiểu về ngôn ngữ PYTHON
2.1.1 Khái niệm PYTHON
Python là một ngôn ngữ lập trình thông dịch do Guido van Rossum tạo ranăm 1990 Python hoàn toàn tạo kiểu động và dùng cơ chế cấp phát bộ nhớ tựđộng; do vậy nó tương tự như Perl, Ruby, Scheme, Smalltalk, và Tcl Pythonđược phát triển trong một dự án mã mở, do tổ chức phi lợi nhuận PythonSoftware Foundation quản lý Theo đánh giá của Eric S Raymond, Python làngôn ngữ có hình thức rất sáng sủa, cấu trúc rõ ràng, thuận tiện cho người mớihọc lập trình
Cấu trúc của Python còn cho phép người sử dụng viết mã lệnh với số lần
Trang 23OS/2, Windows, Linux và các hệ điều hành khác thuộc họ Unix Mặc dù sự pháttriển của Python có sự đóng góp của rất nhiều cá nhân, nhưng Guido vanRossum hiện nay vẫn là tác giả chủ yếu của Python Ông giữ vai trò chủ chốttrong việc quyết định hướng phát triển của Python
2.1.2 Lịch sử phát triển:
Sự phát triển Python đến nay có thể chia làm các giai đoạn:
đầu đến cuối thập niên 1990 Từ năm 1990 đến 1995, Guido làm việc tại
CWI (Centrum voor Wiskunde en Informatica - Trung tâm Toán-Tin học)
tại Amsterdam, Hà Lan Vì nguyên nhân này, các phiên bản Python đầutiên đều do CWI phát hành Phiên bản cuối cùng phát hành tại CWI là 1.2
o Vào năm 1995, Guido chuyển sang Corporation for NationalResearch Initiatives (CNRI) ở Reston, Virginia Tại đây, ông pháthành một số phiên bản khác Python 1.6 là phiên bản cuối cùng pháthành tại CNRI
o Sau bản phát hành 1.6, Guido rời bỏ CNRI để làm việc với các lậptrình viên chuyên viết phần mềm thương mại Tại đây, ông có ýtưởng sử dụng Python với các phần mềm tuân theo chuẩn GPL Sau
đó, CNRI và Free Software Foundation (FSF) đã cùng nhau hợp tác
để làm bản quyền Python phù hợp với GPL Cùng năm đó, Guidođược nhận giải thưởng FSF Award for the Advancement of FreeSoftware
o Phiên bản 1.6.1 ra đời sau đó là phiên bản đâu tiền tuân theo bảnquyền GPL Tuy nhiên, bản này hoàn toàn giống bản 1.6, trừ một số
Trang 24 Python 2: vào năm 2000, Guido và nhóm phát triển Python dời đếnBeOpen.com và thành lập BeOpen PythonLabs team Phiên bản Python2.0 được phát hành tại đây Sau khi phát hành Python 2.0, Guido và cácthành viên PythonLabs gia nhập Digital Creations.
oPython 2.1 ra đời kế thừa từ Python 1.6.1 và Python 2.0 Bản quyềncủa phiên bản này được đổi thành Python Software FoundationLicense Từ thời điểm này trở đi, Python thuộc sở hữu của PythonSoftware Foundation (PSF), một tổ chức phi lợi nhuận được thànhlập theo mẫu Apache Software Foundation
triển vẫn đang thảo luận về phiên bản mới: Python 3.0 (dự án gọi làPython 3000 hoặc Py3K) Dự kiến, dòng 3.x sẽ không hoàn toàn tươngthích với dòng 2.x Nhóm phát triển cho biết sẽ lấp những chỗ hở củangôn ngữ Nguyên tắc chủ đạo để phát triển Python 3.x là "bỏ cách làmviệc cũ nhằm hạn chế trùng lặp về mặt chức năng của Python" Chính vìvậy, tại thời điểm này python đã có phiên bản mới: python 3 Phiên bảnmới nhất của python tại thời điểm này là python 3.2
2.1.3 Các phiên bản nổi tiếng của PYTHON
Python, được viết trong C Những đặc điểm của ngôn ngữ mới xuất hiện đầu tiên từ đây
được sử dụng như là một ngôn ngữ script cho những ứng dụng Java
Trang 25 Python for NET: Phiên bản này thật ra sử dụng phiên bản Cpython,
nhưng nó là một ứng dụng NET được quản lý, và tạo ra thư
viện NET sẵn dùng Bản này được xây dựng bởi Brian Lloyd
Python.NET đây là một bản Python hoàn chỉnh, tạo ra IL, và biên dịch
mã Python trực tiếp vào một tập hợp NET
byte mã cũng được viết trên Python Nó sử dụng Cpython như một trình thông dịch cơ sở Một trong những mục đích của dự án cho ra đời phiên bản này là để khuyến khích sự thử nghiệm bản thân ngôn ngữ này làm cho nó dễ dàng hơn để sửa đổi thông dịch (bởi vì nó được viết trên Python)
2.1.4 Sơ lược về PYTHON:
2.1.4.1 Từ khóa:
Python tăng cường sử dụng từ khóa tiếng Anh, hạn chế các kíhiệu và cấu trúc cú pháp so với các ngôn ngữ khác Python là mộtngôn ngữ phân biệt kiểu chữ Như C/C++, các từ khóa của Pythonđều ở dạng chữ thường Dưới đây là hệ thống từ khóa chuẩn:
And, del, from, not, while, as, elif, global, or, with, assert, else, if, pass, yield, break, except, import, print, class, exec, in, raise, continue, finally, is, return, def, for, lambda, try
Trang 262.1.4.2 Khối lệnh:
Python, có một cách rất đặc biệt để tạo khối lệnh, đó là thụtcác câu lệnh trong khối vào sâu hơn (về bên phải) so với các câulệnh của khối lệnh cha chứa nó
Ví dụ giả sử có đoạn mã sau trong C/C++:
#include <math.h>
//
delta = b * b – 4 * a * c;
if (delta > 0){
// Khối lệnh mới bắt đầu từ kí tự { đến } x1 = (- b + sqrt(delta)) / (2 * a);
x2 = (- b - sqrt(delta)) / (2 * a);
printf("Phuong trinh co hai nghiem phan biet:\n");
printf("x1 = %f; x2 = %f", x1, x2);
}Đoạn mã trên có thể được viết lại bằng Python như sau: