Tải bản đầy đủ (.docx) (29 trang)

báo cáo thực tập cơ sở ứng dụng quét email thông tin doanh nghiệp từ website sử dụng c

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.46 MB, 29 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG</b>

Khoa Công Nghệ Thông Tin

<b>BÁO CÁO THỰC TẬP CƠ SỞ</b>

<b>ỨNG DỤNG QUÉT EMAIL & THÔNG TIN DOANHNGHIỆP TỪ WEBSITE </b>

<b>SỬ DỤNG C#</b>

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

<small>MỤC LỤC...1</small>

<small>LỜI CẢM ƠN...2</small>

<small>LỜI NÓI ĐẦU...3</small>

<small>CHƯƠNG I: GIỚI THIỆU CHUNG...4</small>

<small>1.1. Lý do chọn đề tài...4</small>

<small>1.2. Giới thiệu về ngơn ngữ lập trình C#...4</small>

<small>CHƯƠNG II: PHÂN TÍCH, THIẾT KẾ ỨNG DỤNG QT EMAIL & THƠNG TIN DOANH NGHIỆP TỪ WEBSITE SỬ DỤNG C#...6</small>

<small>2.1. Giới thiệu bài toán...6</small>

<small>2.2. Chức năng cơ bản của ứng dụng...6</small>

<small>2.3. Biểu đồ User Case...6</small>

<small>2.4. Biểu đồ tuần tự...7</small>

<small>2.5. Biểu đồ trạng thái...9</small>

<small>CHƯƠNG III: KẾT QUẢ CÀI ĐẶT...10</small>

<small>3.1. Cài đặt ứng dụng...10</small>

<small>3.2. Chi tiết các bước thực hiện...10</small>

<small>3.3 Giao diện khi khởi chạy ứng dụng...21</small>

<small>KẾT LUẬN...24</small>

<small>TÀI LIỆU THAM KHẢO...25</small>

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<b>LỜI CẢM ƠN</b>

----Sau thời gian học tập, nghiên cứu tại Học viện Cơng nghệ Bưu chính viễnthơng, được sự giúp đỡ và hỗ trợ của các thầy cô giảng dạy, các thầy cô trong khoaCông nghệ thông tin, đến nay em đã hồn thành xong bản báo cáo mơn học Thực

<i><b>tập cơ sở với đề tài: Xây dựng Ứng dụng quét email & thông tin doanh nghiệp từwebsite sử dụng C#. </b></i>

Để có được kết quả này, em xin gửi lời cảm ơn chân thành tới các thầy giáo,cô giáo khoa Cơng Nghệ Thơng Tin và tồn thể cán bộ, cơng nhân viên của HọcViện Cơng Nghệ Bưu Chính Viễn Thơng đã tạo điều kiện để em được học tập và

<b>nghiên cứu. Đặc biệt là thầy Nguyễn Đình Hiến đã tận tình hướng dẫn, giúp đỡ,</b>

chỉ bảo em trong suốt thời gian thực hiện.

Đồng thời, em cũng xin cảm ơn bạn bè, đồng nghiệp đã gắn bó, chia sẻ rấtnhiều kinh nghiệm, những kiến thức quý giá để báo cáo của em có thể hồn thànhmột cách thành cơng nhất.

Tuy nhiên, do thời gian có hạn và kinh nghiệm cịn chưa nhiều nên trong qtrình xây dựng ứng dụng, em khơng thể tránh khỏi những sai xót.

Em rất mong nhận được sự thơng cảm và góp ý của q thầy giáo, cô giáo.Em xin chân thành cảm ơn!

<i><b>Hà Nội, ngày 20 tháng 04 năm 2023</b></i>

<b>Sinh viên thực hiện</b>

<b>Vũ Mỹ Hạnh</b>

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

<b>LỜI NÓI ĐẦU</b>

Trong những năm gần đây, với sự phát triển vượt trội của khoa học kỹ thuậtđặt biệt là công nghệ thông tin, với những ứng dụng của công nghệ thông tin vàonhiều lĩnh vực khác nhau đã đóng góp phần to lớn cho sự nghiệp phát triển kinh tế,xã hội. Cùng với sự phát triển của công nghệ, yêu cầu về sự linh hoạt, tiện lợi trongcác ngành, nghề, dịch vụ của con người cũng thay đổi và gia tăng đáng kể.

Trong khoảng thời gian chịu ảnh hưởng của đại dịch Covid-19, thói quentiêu dùng và mua sắm của người dân đã thay đổi (chuyển từ mua hàng trực tiếpsang mua hàng trực tuyến). Các sàn thương mại điện tử tại Việt Nam trong nhữngnăm qua liên tục ghi nhận mức tăng trưởng mạnh cả về số lượng người tiêu dùngmua sắm trực tuyến và giá trị mua sắm. Điều này được thể hiện rõ trong khi nhiềungành kinh tế khác gặp khó khăn, chật vật xoay sở do chịu ảnh hưởng nặng nề bởidịch bệnh Covid-19, thì thương mại điện tử lại có những điểm sáng và tiếp tục ghinhận sự tăng trưởng ấn tượng.

Giai đoạn từ nay đến năm 2025 sẽ là giai đoạn tăng tốc chuyển đổi số vớinhững hành động triển khai cụ thể theo từng ngành, từng lĩnh vực, từng địaphương. Điều đó địi hỏi các doanh nghiệp khơng chỉ lớn mà còn cả các doanhnghiệp vừa, nhỏ, kể cả là các hộ kinh doanh cá thể phải luôn sáng tạo, vận dụngkhoa học công nghệ vào sản xuất, quản lý,… để đáp ứng nhu cầu thực tại và mongmuốn của người tiêu dùng. Do đó, việc quản lý mua bán hàng qua mạng càng cầnphát triển và áp dụng rộng rãi hơn. Thay vì việc người mua hàng đi tìm sản phẩm,thì hiện nay các cá nhân, cơng ty hay doanh nghiệp họ sẽ chủ động hơn trong việcquảng bá sản phẩm, dịch vụ của mình tới người tiêu dùng. Để làm được việc đómột cách dễ dàng thì họ đã tìm đến các giải pháp marketing: SMS marketing, emailmarketing, facebook marketing, tiktok marketing…Tuy nhiên xét về chi phí và độphức tạp thì email marketing là tối ưu hơn cả. Vậy làm sao để lấy được email củacác cá nhân, công ty, doanh nghiệp? Vậy nên, trong dự án lần này tơi xin chia sẻgiải pháp hữu ích để lấy được số lượng lớn email của các cá nhân, cơng ty, doanhnghiệp từ một website bất kỳ.

Hồn thành báo cáo này, em xin được gửi lời cảm ơn chân thành đến cácthầy, cô khoa Công nghệ thông đã hết lòng truyền đạt kiến thức cho em trong quá

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

Em xin chân thành cảm ơn!

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

<b>CHƯƠNG I: GIỚI THIỆU CHUNG1.1. Lý do chọn đề tài</b>

Chúng ta đang sống trong thời đại công nghệ 4.0, thời đại của các ứng dụngcông nghệ hiện đại được áp dụng phổ biến rộng rãi trong thực tiễn.

So với kinh doanh truyền thống thì thương mại điện tử (TMDT) có chi phíthấp hơn, linh hoạt hơn, hiệu quả đạt cao hơn. Hơn thế nữa, với lợi thế của côngnghệ Internet nên việc truyền tải thông tin về sản phẩm nhanh chóng, thuận tiện.Kết hợp với bộ phận giao hàng tận nơi thơng qua bưu điện,… thanh tốn trựctuyến, càng tăng thêm thuận lợi để loại hình này phát triển.

Các công ty, doanh nghiệp lớn nhỏ đã và đang áp dụng marketing để đưa sảnphẩm, dịch vụ của mình tới tận tay người tiêu dùng trong thời gian ngắn nhất màkhơng mất q nhiều chi phí. Chính vì vậy trong dự án lần này, tôi xin giới thiệu về

<i><b>ứng dụng Quét email & thông tin doanh nghiệp trên trang website sử dụng C# .</b></i>

Ứng dụng này được áp dụng khá nhiều vào chiến dịch marketing của các công ty,

<i>doanh nghiệp, các nhân…(email marketing). Email Marketing hay marketing qua</i>

<i>email là hình thức các doanh nghiệp sử dụng email để marketing, giới thiệu sản</i>

phẩm/dịch vụ tới khách hàng mục tiêu, hỗ trợ duy trì mối quan hệ, xây dựng lịngtrung thành giữa khách hàng và doanh nghiệp. Qua đó thúc đẩy hành vi mua hàngvà nâng cao hiệu quả doanh thu.

Mặc dù Email marketing khơng cịn là một thuật ngữ quá xa lạ với dân trongngành, tuy nhiên với những bạn mới bắt đầu tìm hiểu về marketing thì đây có thể làmột khái niệm cịn mới mẻ.

So với SMS marketing thì Email marketing vẫn được sử dụng rộng rãi vàmang lại hiệu quả tốt hơn nhờ tốc độ truyền tải vượt trội, chi phí hoạt động thấphơn. Điều này vừa giúp doanh nghiệp đạt hiệu quả marketing lại vừa tối ưu về chiphí.

<b>1.2. Giới thiệu về ngơn ngữ lập trình C#</b>

<i><b>C# (C Sharp, đọc là "xi-sáp") là một </b>ngơn ngữ lập trình hướng đối tượng đa</i>

năng, mạnh mẽ được phát triển bởi Microsoft, C# là phần khởi đầu cho kếhoạch .NET của họ. Tên của ngôn ngữ bao gồm ký tự thăng theo Microsoft nhưngtheo ECMA<b> là C#, chỉ bao gồm dấu số thường. </b>

Microsoft phát triển C# dựa trên C++ và Java. C# được miêu tả là ngơn ngữcó được sự cân bằng giữa C++, Visual Basic, Delphi và Java.

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

<b>1.2.1 Ưu điểm của C#</b>

 C# là ngôn ngữ lập trình mã nguồn mở,vì vậy C# là miễn phí với tất cả mọingười, đồng thời mọi người đều có thể cùng tham gia phát triển, đề xuất thiếtkế ngôn ngữ C#

 C# là ngôn ngữ đa nền tảng vì vậy có thể biên dịch trên nhiều nền tảng máytính khác nhau (Windows, Linux, MacOS)

 C# có hiệu suất cao và tốc độ thực thi nhanh do sử dụng trình biên dịch trunggian (CLR), điểm cộng nữa là tốc độ phát triển phần mềm nhanh chóng sovới đa số các ngơn ngữ hiện tại.

 C# có IDE Visual Studio cùng nhiều plug-in vơ cùng mạnh mẽ. Ngồi ra cóthể viết C# bằng bất kỳ text editor nào khác như Visual Studio Code, Vim,Netbeam...

 C# có cấu trúc khá gần gũi với các ngơn ngữ lập trình truyền thống, songcũng được bổ sung các yếu tố mang tính hiện đại nên dễ dàng tiếp cận chongười mới học và học nhanh với C#.

 C# có cộng đồng nhà phát triển vô cùng lớn mạnh.

 C# được phát triển và cải tiến không ngừng với tần suất 1 phiên bản/ 1 năm,đáp ứng các mong muốn cải thiện, cải tiến cho phù hợp với nhu cầu côngnghệ của các nhà phát triển.

 C# có tài liệu tham khảo và hướng dẫn vơ cùng phong phú và chất lượng,đồng thời có các buổi hội thảo giới thiệu tính năng mới và định hướng pháttriển ngôn ngữ trong tương lai.

 C# và.NET được đánh giá là có design tốt, vì vậy cú pháp và logic rất nhấtquán, mã nguồn C# dễ đọc và mở rộng.

 C# được thiết kế và phát triển bởi Microsoft nên rất được Microsoft quantâm và hỗ trợ.

<b>1.2.2 Nhược điểm của C#</b>

Nhược điểm lớn nhất của C# là chỉ chạy trên nền Windows và có cài . NET Framework. Thao tác đối với phần cứng yếu hơn so với ngôn ngữ khác, hầu hết phải dựa vào windows

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

<b>CHƯƠNG II: PHÂN TÍCH, THIẾT KẾ ỨNG DỤNG QUÉT EMAIL &THÔNG TIN DOANH NGHIỆP TỪ WEBSITE SỬ DỤNG C#2.1. Giới thiệu bài tốn</b>

Ứng dụng qt emai và thơng tin doanh nghiệp từ website là một ứng dụngcó thể nói là cần thiết đối với cá nhân, cơng ty, doanh nghiệp có sử dụng các dịchvụ marketing để quảng bá sản phẩm, dịch vụ của mình tới người tiêu dùng.

<b>2.2. Chức năng cơ bản của ứng dụng</b>

- Quét toàn bộ email có trong 1 website - Xuất danh sách email ra file text

- Qt tồn bộ thơng tin doanh nghiệp có trong 1 website - Xuất kết quả thơng tin doanh nghiệp quét được ra file excel

<b>2.3. Biểu đồ User Case</b>

<i>Hình 1 Biểu đồ use-case 1</i>

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

<i>Hình 2 Biểu đồ use-case 2</i>

<b>2.4. Biểu đồ tuần tự</b>

<i>Hình 3 Biểu đồ tuần tự Lấy email</i>

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

<i>Hình 4 Biểu đồ tuần tự Lấy thơng tin doanh nghiệp</i>

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

2.5. Biểu đồ trạng thái

<i>Hình 5 Biểu đồ trạng thái Lấy email</i>

<i>Hình 6 Biểu đồ trạng thái Lấy thông tin doanh nghiệp</i>

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

<b>CHƯƠNG III: KẾT QUẢ CÀI ĐẶT3.1. Cài đặt ứng dụng</b>

<i>Trong dự án “Ứng dụng quét email & thông tin doanh nghiệp trên website”</i>

<b>lần này cần cài đặt: Visual studio 2022Ngôn ngữ sử dụng: C#</b>

Trong dự án lần này tôi thực hiện quét email & thông tin doanh nghiệp trên

<b>một website cụ thể: </b>

<b>3.2. Chi tiết các bước thực hiện</b>

 Tạo project mới trong Visual Studio 2022. Trong dự án này tôi đặt tên cho

<b>project là: EmailHunter (File -> New -> Project->Next)</b>

<i>Hình 7 Giao hiện khi tạo project mới</i>

 Sau khi bấm “Next” Trong project sẽ tự động tạo ra 2 form:

<i>form1.css (code và thao tác bắt sự kiện cho các button)form1.css[design] (thiết kế giao diện)</i>

 Trong phần thiết kế giao diện tạo:

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

<i>2 Richtexbox (hiển thị toàn bộ url doanh nghiệp, hiển thị toàn bộ email lấy</i>

<i>được từ website, hiển thị toàn bộ thông tin doanh nghiệp lấy được từwebsite)</i>

<i>Hình 8 Giao diện chính trong file Form1.css[design]</i>

 Khởi tạo các hàm, các biến cần dùng: listmail, listurls, listdoanhnghiep, ten, email, url, diachi, hotline, daidien…..

<b>3.2.1 Sự kiện nút “Lấy email”</b>

Việc trước tiên đó là lấy url của trang html của website: trong bước này điều quan trọng đó là xác định được nguồn trang của website đó (tức là phải lấy được trang html của website). Ta thực hiện Ctr + U hoặc click chuộtphải vào trang web rồi chọn “Xem nguồn trang”

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

<i>Hình 9 Trang html của website</i>

<b>Trong Form1.css tơi thực hiện các cơng việc chính như sau:</b>

<small>public void GetAllMail(string url) {</small>

<small> int pageCounter = Int16.Parse(comboBoxPage.SelectedItem.ToString()); for (int page = 1; page <= pageCounter; page++)</small>

<small> {</small>

<small> //Lấy đường dẫn url page </small>

<small> Log("Lấy dữ liệu page: " + page); var builder = new UriBuilder(url);</small>

<small> var query = System.Web.HttpUtility.ParseQueryString(builder.Query); query.Set("page", page.ToString());</small>

<small> builder.Query = query.ToString(); var newUrl = builder.Uri.ToString(); GetEmailPage(newUrl);</small>

<small> } }</small>

 Thực hiện lấy email từ urlLấy html từ url

Dùng biểu thức chính quy Regex Expressions để lọc EmailLấy tất cả email lọc được cho vào 1 list

<small> //Lấy html của url</small>

<small> var request = WebRequest.Create(url); var response = request.GetResponse(); var stream = response.GetResponseStream(); var reader = new StreamReader(stream); var content = reader.ReadToEnd();</small>

<small> //Dùng biểu thức chính quy Regex Expressions để lọc Email</small>

<small> var pattern = @"([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+)"; var regex = new Regex(pattern);</small>

<small> var matches = regex.Matches(content); //Lấy tất cả mail quét được cho vào 1 list</small>

<small> List<string> listEmailTemp = new List<string>(); foreach (Match match in matches)</small>

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

<i><b>Giải thích theo thứ tự lần lượt: </b></i>

@ Là ký tự bắt đầu của chuỗi

xuất hiện 1 hoặc nhiều lần, trong đó bao gồm các ký tự a-z, A-Z, số từ 0-9 và các ký tự đặc biệt như . hoặc _ hoặc –

@ Là ký tự @ giữa tên người dùng và tên miền (domain name)

hiện 1 hoặc nhiều lần, trong đó bao gồm các ký tự a-z, A-Z, số từ 0-9 và các ký tự đặc biệt như . hoặc _ hoặc –

\. Đại diện cho dấu chấm trong tên miền. Ký tự \ được sử dụng để thốt khỏi ký tự đặc biệt này

ít nhất 2 ký tự a-z hoặc A-Z

+ Là ký tự kết thúc của chuỗi

 Trong dự án này tôi sử dụng Notpad++ để lưu toàn bộ email lọc được từ website

<b>3.2.2 Sự kiện nút “Lưu file”</b>

<small> private void btnSave_Click(object sender, EventArgs e) {</small>

<small> string data = string.Join("\n", listMail); if (data != "")</small>

<small> {</small>

<small> File.WriteAllText("email.txt", data);</small>

<small> Process.Start("notepad++.exe", "email.txt");</small>

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

<small> } else {</small>

<small> MessageBox.Show("Khơng có dữ liệu"); }</small>

<small> }</small>

<b>3.2.3 Sự kiện nút “Lấy danh sách”</b>

Để lấy được thông tin doanh nghiệp thì điều trước tiên là phải lấy được danh sách URL của tồn bộ các doanh nghiệp đó. Để thực hiện việc này cần sử dụng tới

<b>thư viện Selenium (Thư viện auto chorme – trình duyệt web tự động) </b>

<small>//Lấy số trang cần quét</small>

<small> int pageCounter = Int16.Parse(comboBoxPage.SelectedItem.ToString()); //Lấy danh sách url</small>

<small> for (int i=1; i<= pageCounter; i++) {</small>

<small> Log("Lấy danh sách tại trang " + i);</small>

<small> //Xây dựng link để lấy chính xác trang cần lấy (page=2) UriBuilder uriBuilder = new UriBuilder(txtUrl.Text);</small>

<small> var query = HttpUtility.ParseQueryString(uriBuilder.Query); query["page"] = i.ToString();</small>

<small> uriBuilder.Query = query.ToString(); //cho chrome load trang</small>

<small> try {</small>

<small> driver.Url = uriBuilder.ToString(); }</small>

<small> catch(Exception ex) {</small>

<small> if(listDoanhNghiepElements.Count > 0) {</small>

<small> Log("Số doanh nghiệp tìm được tại trang " + i + ": " + listDoanhNghiepElements.Count);</small>

<small> foreach(IWebElement DoanhNghiepElement in listDoanhNghiepElements) {</small>

<small> //Lây đường dẫn url của doanh nghiệp</small>

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

<small> else {</small>

<small> //Nếu trang đang quét không chưa đường dẫn nào của doanh nghiệp thì khơngqt nữa</small>

<small> break; }</small>

<small> }</small>

<small> //Quét xong, in ra tổng số doanh nghiệp quét được Log("Tổng số Doanh Nghiệp: " + listUrls.Count); //Đóng chrome</small>

<small> driver.Quit(); }</small>

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

<b>3.2.4 Sự kiện nút “Lấy data”</b>

<small>private void btnLayData_Click(object sender, EventArgs e) {</small>

<small> </small>

<small> //Tạo luồng gọi hàm lấy data</small>

<small> Thread threadGetData = new Thread(() => GetData()); threadGetData.Start();</small>

<small> chromeDriverService.HideCommandPromptWindow = true; ChromeOptions chromeOptions = new ChromeOptions(); List<string> list = new List<string></small>

<small> {</small>

<small> "--no-first-run", "--no-sandbox", "--disable-gpu",</small>

<small> "--disable-blink-features=AutomationControlled", "--disable-infobars",</small>

<small> { </small>

<small> driver.Url = txtUrl.Text; }</small>

<small> catch (Exception ex) {</small>

<small> }</small>

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

<small> try { try {</small>

<small> //truy cập vào link của doanh nghiệp driver.Url = url;</small>

<small> }</small>

<small> catch(Exception ex) {</small>

<small> //Lỗi xảy ra có thể mạng kém hoặc url không tồn tại }</small>

<small> //Lấy tên doanh nghiệp string ten = "";</small>

<small> try {</small>

<small> ten = driver.FindElement(By.ClassName("tencongty")).Text.Trim(); Log("Doanh nghiệp: " + ten);</small>

<small> }</small>

<small> catch (Exception) {</small>

<small> }</small>

<small> //Lấy Email Doanh nghiệp string email = "";</small>

<small> try {</small>

<small> email = driver.FindElement(By.ClassName("text_email")).Text.Trim(); Log("Email: " + email);</small>

<small> }</small>

<small> catch (Exception) {</small>

<small> }</small>

<small> //Lấy Địa chỉ Doanh nghiệp string diachi = "";</small>

<small> try {</small>

<small> diachi = </small>

<small>driver.FindElement(By.ClassName("diachi_chitiet_li2dc")).Text.Trim(); Log("Địa chỉ: " + diachi);</small>

<small> }</small>

<small> catch (Exception) {</small>

<small> }</small>

<small> //Lấy Thông tin thêm string sdt = ""; string hotline = ""; string daidien = "";</small>

<small> //Lấy danh sách các div bên sidebar bên phải</small>

</div>

×