Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 29

HỌC VIỆN

CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG


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

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#

Giảng viên hướng dẫn: NGUYỄN ĐÌNH HIẾN

Sinh viên thực hiện: VŨ MỸ HẠNH


Mã SV: B22DTCN055
Lớp: D22TXCN02-B
MỤC LỤC

MỤC LỤC......................................................................................................................................................1
LỜI CẢM ƠN.................................................................................................................................................2
LỜI NÓI ĐẦU................................................................................................................................................3
CHƯƠNG I: GIỚI THIỆU CHUNG..............................................................................................................4
1.1. Lý do chọn đề tài......................................................................................................................... 4
1.2. Giới thiệu về ngôn ngữ lập trình C#................................................................................................ 4
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#........................................................................................................................6
2.1. Giới thiệu bài toán....................................................................................................................... 6
2.2. Chức năng cơ bản của ứng dụng................................................................................................. 6
2.3. Biểu đồ User Case....................................................................................................................... 6
2.4. Biểu đồ tuần tự............................................................................................................................ 7
2.5. Biểu đồ trạng thái........................................................................................................................ 9
CHƯƠNG III: KẾT QUẢ CÀI ĐẶT...........................................................................................................10
3.1. Cài đặt ứng dụng....................................................................................................................... 10
3.2. Chi tiết các bước thực hiện........................................................................................................ 10
3.3 Giao diện khi khởi chạy ứng dụng............................................................................................. 21
KẾT LUẬN..................................................................................................................................................24
TÀI LIỆU THAM KHẢO............................................................................................................................25
2

LỜI CẢM ƠN
----
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ễn
thô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 khoa
Công nghệ thông tin, đến nay em đã hoàn thành xong bản báo cáo môn học Thực
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#.
Để 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à toàn thể cán bộ, công nhân viên của Học
Việ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à
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 đỡ,
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ất
nhiều kinh nghiệm, những kiến thức quý giá để báo cáo của em có thể hoàn thành
mộ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 quá
trì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 quý thầy giáo, cô giáo.
Em xin chân thành cảm ơn!
Hà Nội, ngày 20 tháng 04 năm 2023
Sinh viên thực hiện

Vũ Mỹ Hạnh

Xây dựng ứng dụng quét email & thông tin doanh nghiệp từ website sử dụng C#
3

LỜI NÓI ĐẦU


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ào
nhiề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 trong
cá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 quen
tiêu dùng và mua sắm của người dân đã thay đổi (chuyển từ mua hàng trực tiếp
sang 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ững
nă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ùng
mua sắm trực tuyến và giá trị mua sắm. Điều này được thể hiện rõ trong khi nhiều
ngà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ởi
dị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 ghi
nhậ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ới
những hành động triển khai cụ thể theo từng ngành, từng lĩnh vực, từng địa
phương. Điều đó đòi hỏi các doanh nghiệp không chỉ lớn mà còn cả các doanh
nghiệ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ụng
khoa học công nghệ vào sản xuất, quản lý,… để đáp ứng nhu cầu thực tại và mong
muố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ần
phá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ệc
quả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, email
marketing, 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ủa
cá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, doanh
nghiệp từ một website bất kỳ.
Hoà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ác
thầy, cô khoa Công nghệ thông đã hết lòng truyền đạt kiến thức cho em trong quá
trình học tập. Tuy đã cố gắng hết sức tìm hiểu, phân tích thiết kế và xây dựng ứng
dụng nhưng chắc rằng trong quá trình thực hiện không thể tránh khỏi những thiếu
sót.
Em rất mong nhận được sự thông cảm và góp ý của quý thầy, cô.

Xây dựng ứng dụng quét email & thông tin doanh nghiệp từ website sử dụng C#
4

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

Xây dựng ứng dụng quét email & thông tin doanh nghiệp từ website sử dụng C#
5

CHƯƠNG I: GIỚI THIỆU CHUNG


1.1. Lý do chọn đề tài
Chúng ta đang sống trong thời đại công nghệ 4.0, thời đại của các ứng dụng
cô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ông
nghệ 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 toán trực
tuyế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ản
phẩ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 quá nhiều chi phí. Chính vì vậy trong dự án lần này, tôi xin giới thiệu về
ứng dụng Quét email & thông tin doanh nghiệp trên trang website sử dụng C# .
Ứ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,
doanh nghiệp, các nhân…(email marketing). Email Marketing hay marketing qua
email là hình thức các doanh nghiệp sử dụng email để marketing, giới thiệu sản
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òng
trung thành giữa khách hàng và doanh nghiệp. Qua đó thúc đẩy hành vi mua hàng
và 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 trong
ngà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ấp
hơ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ề chi
phí.

1.2. Giới thiệu về ngôn ngữ lập trình C#


C# (C Sharp, đọc là "xi-sáp") là một ngôn ngữ lập trình hướng đối tượng đa
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ưng
theo ECMA là C#, chỉ bao gồm dấu số thường.
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.
C# được thiết kế chủ yếu bởi Anders Hejlsberg kiến trúc sư phần mềm nổi
tiếng với các sản phẩm Turbo Pascal, Delphi, J++, WFC.

Xây dựng ứng dụng quét email & thông tin doanh nghiệp từ website sử dụng C#
6

1.2.1 Ưu điểm của C#

 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ọi
người, đồng thời mọi người đều có thể cùng tham gia phát triển, đề xuất thiết
kế 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áy
tí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 trung
gian (CLR), điểm cộng nữa là tốc độ phát triển phần mềm nhanh chóng so
vớ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ẽ. Ngoà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, song
cũng được bổ sung các yếu tố mang tính hiện đại nên dễ dàng tiếp cận cho
ngườ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ông
nghệ 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át
triể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ất
quá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 quan
tâm và hỗ trợ.

1.2.2 Nhược điểm của C#


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

Xây dựng ứng dụng quét email & thông tin doanh nghiệp từ website sử dụng C#
7

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 toán
Ứng dụng quét emai và thông tin doanh nghiệp từ website là một ứng dụng
có 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ịch
vụ marketing để quảng bá sản phẩm, dịch vụ của mình tới người tiêu dùng.
2.2. Chức năng cơ bản của ứng dụng
- Quét toàn bộ email có trong 1 website
- Xuất danh sách email ra file text
- Quét toà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

2.3. Biểu đồ User Case

Hình 1 Biểu đồ use-case 1

Xây dựng ứng dụng quét email & thông tin doanh nghiệp từ website sử dụng C#
8

Hình 2 Biểu đồ use-case 2


2.4. Biểu đồ tuần tự

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

Xây dựng ứng dụng quét email & thông tin doanh nghiệp từ website sử dụng C#
9

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

Xây dựng ứng dụng quét email & thông tin doanh nghiệp từ website sử dụng C#
10

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

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

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


Xây dựng ứng dụng quét email & thông tin doanh nghiệp từ website sử dụng C#
11

CHƯƠNG III: KẾT QUẢ CÀI ĐẶT


3.1. Cài đặt ứng dụng
Trong dự án “Ứng dụng quét email & thông tin doanh nghiệp trên website”
lần này cần cài đặt: Visual studio 2022
Ngôn ngữ sử dụng: C#
Trong dự án lần này tôi thực hiện quét email & thông tin doanh nghiệp trên
một website cụ thể: https://trangvangvietnam.com
3.2. Chi tiết các bước thực hiện
 Tạo project mới trong Visual Studio 2022. Trong dự án này tôi đặt tên cho
project là: EmailHunter (File -> New -> Project->Next)

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


 Sau khi bấm “Next” Trong project sẽ tự động tạo ra 2 form:
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)
 Trong phần thiết kế giao diện tạo:
1 textbox (ad sẵn link website: https://trangvangvietnam.com )
1 combobox (chọn số trang cần lấy email)
5 button (Lấy email, lưu file, Lấy danh sách, Lấy data, Lưu Excel)
2 Richtexbox (hiển thị toàn bộ url doanh nghiệp, hiển thị toàn bộ email lấy
Xây dựng ứng dụng quét email & thông tin doanh nghiệp từ website sử dụng C#
12

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

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


 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…..

3.2.1 Sự kiện nút “Lấy email”


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ột
phải vào trang web rồi chọn “Xem nguồn trang”

Xây dựng ứng dụng quét email & thông tin doanh nghiệp từ website sử dụng C#
13

Hình 9 Trang html của website


Trong Form1.css tôi thực hiện các công việc chính như sau:
 Lấy đường dẫn url page
public void GetAllMail(string url)
{
int pageCounter = Int16.Parse(comboBoxPage.SelectedItem.ToString());

for (int page = 1; page <= pageCounter; page++)


{
//Lấy đường dẫn url page
Log("Lấy dữ liệu page: " + page);
var builder = new UriBuilder(url);
var query = System.Web.HttpUtility.ParseQueryString(builder.Query);
query.Set("page", page.ToString());
builder.Query = query.ToString();
var newUrl = builder.Uri.ToString();
GetEmailPage(newUrl);
}
}

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


Lấy html từ url
Dùng biểu thức chính quy Regex Expressions để lọc Email
Lấy tất cả email lọc được cho vào 1 list
Lọc các email trùng nhau
Thêm email đã quét được ở 1 page vào list tổng – listMail
Lưu toàn bộ email lọc được ra Notpad++

public void GetEmailPage(string url)


{
try
{
//Lấy html của url
var request = WebRequest.Create(url);
var response = request.GetResponse();
var stream = response.GetResponseStream();
var reader = new StreamReader(stream);
var content = reader.ReadToEnd();
//Dùng biểu thức chính quy Regex Expressions để lọc Email
var pattern = @"([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+)";
var regex = new Regex(pattern);
var matches = regex.Matches(content);
//Lấy tất cả mail quét được cho vào 1 list
List<string> listEmailTemp = new List<string>();
foreach (Match match in matches)
{
listEmailTemp.Add(match.Value);
}
//Lọc mail trùng
List<string> newList = listEmailTemp.Distinct().ToList();
// Thêm email đã quét được ở 1 page vào list tổng - listMail
foreach (string email in newList)

Xây dựng ứng dụng quét email & thông tin doanh nghiệp từ website sử dụng C#
14

{
Log(email);
//Nếu list mail tổng không tồn tại email này thì thêm vào list tổng
if (!listMail.Contains(email))
{
listMail.Add(email);
}
}
Log("Email tìm được: " + listMail.Count);
}
catch (Exception ex)
{
//Lỗi mạng hoặc bị chặn
txtLog.Text = "Lỗi" + ex.Message;
}
}

 Dùng biểu thức chính quy Regex Expressions để lọc Email


@”([a-zA-Z0-0._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+)”

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


@ Là ký tự bắt đầu của chuỗi
[a-zA-Z0-9._-]+ Đại diện cho tên người dùng của địa chỉ email. Ký tự + cho phép
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)
[a-zA-Z0-9._-]+ Đại diện cho tên miền của địa chỉ email. Ký tự + cho phép 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 –
\. Đại diện cho dấu chấm trong tên miền. Ký tự \ được sử dụng để thoát khỏi ký tự
đặc biệt này
[a-zA-Z0-9._-]+ Đại diện cho phần sau dấu chấm trong tên miền. Nó phải bao gồm
í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

3.2.2 Sự kiện nút “Lưu file”


private void btnSave_Click(object sender, EventArgs e)
{
string data = string.Join("\n", listMail);
if (data != "")
{
File.WriteAllText("email.txt", data);
Process.Start("notepad++.exe", "email.txt");

Xây dựng ứng dụng quét email & thông tin doanh nghiệp từ website sử dụng C#
15

}
else
{
MessageBox.Show("Không có dữ liệu");
}

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


Để 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 toàn bộ các doanh nghiệp đó. Để thực hiện việc này cần sử dụng tới
thư viện Selenium (Thư viện auto chorme – trình duyệt web tự động)
//Lấy số trang cần quét
int pageCounter = Int16.Parse(comboBoxPage.SelectedItem.ToString());
//Lấy danh sách url
for (int i=1; i<= pageCounter; i++)
{
Log("Lấy danh sách tại trang " + i);

//Xây dựng link để lấy chính xác trang cần lấy (page=2)
UriBuilder uriBuilder = new UriBuilder(txtUrl.Text);
var query = HttpUtility.ParseQueryString(uriBuilder.Query);
query["page"] = i.ToString();
uriBuilder.Query = query.ToString();
//cho chrome load trang
try
{

driver.Url = uriBuilder.ToString();
}
catch(Exception ex)
{

}
//Đợi khoảng 2 để cho trang load hết các thành phần ví dụ như javascript
Thread.Sleep(2000);

//Lấy danh sách phần tử chứa link của doanh nghiệp


var listDoanhNghiepElements =
driver.FindElements(By.XPath("//div[@id='listingsearch']//h2[@class='company_name']/a"));
if(listDoanhNghiepElements.Count > 0)
{
Log("Số doanh nghiệp tìm được tại trang " + i + ": " + listDoanhNghiepElements.Count);
foreach(IWebElement DoanhNghiepElement in listDoanhNghiepElements)
{
//Lây đường dẫn url của doanh nghiệp
string DoanhNghiep_Url = DoanhNghiepElement.GetAttribute("href");
//In đường dẫn doanh nghiệp vào Log2
Log2(DoanhNghiep_Url);
//Thêm đường dẫn doanh nghiệp mới quét được vào danh sách
listUrls.Add(DoanhNghiep_Url);
}
}
else
{
//Nếu trang đang quét không chưa đường dẫn nào của doanh nghiệp thì không quét nữa

Xây dựng ứng dụng quét email & thông tin doanh nghiệp từ website sử dụng C#
16

break;
}
}
//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
driver.Quit();
}

Xây dựng ứng dụng quét email & thông tin doanh nghiệp từ website sử dụng C#
17

3.2.4 Sự kiện nút “Lấy data”

private void btnLayData_Click(object sender, EventArgs e)


{

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


Thread threadGetData = new Thread(() => GetData());
threadGetData.Start();
}

//hàm lấy data doanh nghiệp


public void GetData()
{
//Xoá data doanh nghiệp đã quét lần trước
listDN.Clear();
//Nếu không có danh url của doanh nghiệp thì dừng không xử lý
if (listUrls.Count == 0)
{
Log("Danh sách trống, cần lấy danh sách trước");
return;
}

//Khởi tạo trình duyệt chrome


ChromeDriverService chromeDriverService = ChromeDriverService.CreateDefaultService();
chromeDriverService.HideCommandPromptWindow = true;
ChromeOptions chromeOptions = new ChromeOptions();
List<string> list = new List<string>
{
"--no-first-run",
"--no-sandbox",
"--disable-gpu",
"--disable-blink-features=AutomationControlled",
"--disable-infobars",
};
chromeOptions.AddArguments(list.ToArray());
IWebDriver driver = new ChromeDriver(chromeDriverService, chromeOptions);
//Set timeout cho chrome
driver.Manage().Timeouts().PageLoad = TimeSpan.FromSeconds(30);
try
{

driver.Url = txtUrl.Text;
}
catch (Exception ex)
{

//Biến đếm lỗi, nếu quá 3 lỗi thì thôi không quét nữa
int dem_loi=0;

//vòng lặp quét tất cả doanh nghiệp đã lấy được url


foreach (string url in listUrls)
{
try
{

Xây dựng ứng dụng quét email & thông tin doanh nghiệp từ website sử dụng C#
18

try
{
//truy cập vào link của doanh nghiệp
driver.Url = url;
}
catch(Exception ex)
{
//Lỗi xảy ra có thể mạng kém hoặc url không tồn tại
}

//Lấy tên doanh nghiệp


string ten = "";
try
{
ten = driver.FindElement(By.ClassName("tencongty")).Text.Trim();
Log("Doanh nghiệp: " + ten);
}
catch (Exception)
{

//Lấy Email Doanh nghiệp


string email = "";
try
{
email = driver.FindElement(By.ClassName("text_email")).Text.Trim();
Log("Email: " + email);
}
catch (Exception)
{

//Lấy Địa chỉ Doanh nghiệp


string diachi = "";
try
{
diachi = driver.FindElement(By.ClassName("diachi_chitiet_li2dc")).Text.Trim();
Log("Địa chỉ: " + diachi);
}
catch (Exception)
{

//Lấy Thông tin thêm

string sdt = "";


string hotline = "";
string daidien = "";

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


var InfoElements = driver.FindElements(By.XPath("//div[@id='listing_detail_right']/div[1]/div"));
foreach (var InfoElement in InfoElements)
{
string txt = InfoElement.Text.Trim();

Xây dựng ứng dụng quét email & thông tin doanh nghiệp từ website sử dụng C#
19

//Nếu div đó chứa họ tên thì trích xuất ra họ tên


if(txt.Contains("Họ tên:"))
{
daidien = txt.Replace("Họ tên:","").Trim();
Log(daidien);
}
//Nếu div đó chứa điện thoại thì trích xuất điện thoại
else if (txt.Contains("Điện thoại:"))
{
sdt = txt.Replace("Điện thoại:", "").Trim();
Log(sdt);
}
//Nếu div đó chứa di động thì trích xuất đi động
else if (txt.Contains("Di động:"))
{
hotline = txt.Replace("Di động:", "").Trim();
Log(hotline);
}
}

if (ten != "")
{
//Nếu lấy được tên doanh nghiệp thì sẽ thêm doanh nghiệp đó vào list (các trường khác có thể
thiếu)
DoanhNghiep dn = new DoanhNghiep(ten, email,url,diachi,sdt,hotline,daidien);
listDN.Add(dn);
}
}
catch (Exception)
{
//tăng biến dem_loi nếu xảy ra lỗi
dem_loi++;
Log("Lỗi lấy thông tin Doanh nghiệp");
//Dừng quét nếu gặp nhiều lỗi
if (dem_loi > 3)
{
Log("Tạm dừng quét do gặp nhiều lỗi");
break;
}
}
Log("----------------------------------------");
}
//Đóng chrome
driver.Quit();
Log("Lấy data xong");
}

3.2.5 Sự kiện nút “Lưu excel”

private void btnLuuExcel_Click(object sender, EventArgs e)


{

//Nếu list doanh nghiệp không có data thì không xử lý


if (listDN.Count == 0)

Xây dựng ứng dụng quét email & thông tin doanh nghiệp từ website sử dụng C#
20

{
Log("Chưa có dữ liệu! Vui lòng get Data trước");
return;
}
//Gọi hàm lưu excel
SaveExcel();

//Hàm lưu excel


public void SaveExcel()
{
string filepath = "";
//Gọi hộp thoại lưu file
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Filter = "Excel | *.xlsx | Excel 2003 | *.xls";
saveFileDialog.ShowDialog();
if (saveFileDialog.FileName != "")
{
filepath = saveFileDialog.FileName;
}
if (string.IsNullOrEmpty(filepath))
{
MessageBox.Show("Đường dẫn báo cáo không hợp lệ");
return;
}
try
{
using (ExcelPackage excelPackage = new ExcelPackage())
{
//Cài đặt một số thông tin file excel
excelPackage.Workbook.Properties.Author = "Vu My Hanh";
excelPackage.Workbook.Properties.Title = "Email Hunter";
excelPackage.Workbook.Worksheets.Add("Email");
ExcelWorksheet excelWorksheet = excelPackage.Workbook.Worksheets[1];
excelWorksheet.Name = "Email";
excelWorksheet.Cells.Style.Font.Size = 11f;
excelWorksheet.Cells.Style.Font.Name = "Calibri";
//Cài đặt header cho từng cột
string[] arrheader = new string[] { "STT", "Url", "Tên", "Đại diện", "Email", "SĐT", "Hotline", "Địa
chỉ"};
int col = 1;
int row = 1;
//Điền tiêu đề
foreach (string value in arrheader)
{
ExcelRange excelRange = excelWorksheet.Cells[row, col];
excelRange.Value = value;
col++;
}
//Điền thông tin doanh nghiệp theo từng dòng
foreach (DoanhNghiep DN in listDN)
{
col = 1;
row++;
excelWorksheet.Cells[row, col++].Value = (row-1).ToString();
excelWorksheet.Cells[row, col++].Value = DN.Url;

Xây dựng ứng dụng quét email & thông tin doanh nghiệp từ website sử dụng C#
21

excelWorksheet.Cells[row, col++].Value = DN.Ten;


excelWorksheet.Cells[row, col++].Value = DN.Daidien;
excelWorksheet.Cells[row, col++].Value = DN.Email;
excelWorksheet.Cells[row, col++].Value = DN.Sdt;
excelWorksheet.Cells[row, col++].Value = DN.Hotline;
excelWorksheet.Cells[row, col++].Value = DN.Diachi;

}
//Lưu file
byte[] asByteArray = excelPackage.GetAsByteArray();
File.WriteAllBytes(filepath, asByteArray);
}

//Hộp thoại hỏi xem có mở file luôn hay không


DialogResult dr = MessageBox.Show("Open File", "Xuất excel thành công",
MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information);

if (dr == DialogResult.Yes)
{
// Nếu Yes => mở file
Process.Start("excel.exe", filepath);
}
}
catch (Exception ex)
{
//Lỗi khi lưu file
MessageBox.Show("Có lỗi khi lưu file!");
Log(ex.Message);
Log(ex.StackTrace);
}
}
}
}

Xây dựng ứng dụng quét email & thông tin doanh nghiệp từ website sử dụng C#
22

3.3 Giao diện khi khởi chạy ứng dụng

Hình 10 Giao diện chính khi chạy ứng dụng


Trong dự án lần này tôi làm cụ thể cho trang website: http://trangvangvietnam.com
nên link của website này được gán cố định trong mục text của txtUrl
Combo box bên cạnh là để lấy số lượng trang cần quét email của website.

Ví dụ: Thực hiện quét email và lấy thông tin doanh nghiệp của 5 trang đầu tiên của
website http://trangvangvietnam.com ta thực hiện như sau:

Quét Email

Trong combo box chọn số 5

Khi click “Lấy Email” thì toàn bộ email của 5 trang đầu tiên của website đó được
hiển thị trong phần RichTextBox (txtLog) và thông báo số email tìm được là 181.
Màn hình ví dụ bên dưới

Xây dựng ứng dụng quét email & thông tin doanh nghiệp từ website sử dụng C#
23

Hình 11 Giao diện khi thực hiện quét email 5 trang đầu của website
Khi nhấn nút “Lưu file” thì toàn bộ 181 email tìm được ở trên sẽ được xuất ra
Notpad++. Sau đó thực hiện lưu file trên Notpad++ (File->Save as).

Hình 12 Toàn bộ email quét được hiển thị trên Notpad++

Xây dựng ứng dụng quét email & thông tin doanh nghiệp từ website sử dụng C#
24

=>>Thực hiện lưu file trên Notpad++. Vậy là xong bước lấy Email

Lấy thông tin doanh nghiệp:

Khi click “Lấy danh sách” thì toàn bộ url của các doanh nghiệp có trong 5 trang
đầu của website được lấy và hiện thị trên RichTextBox (txtLog2), số lượng doanh
nghiệp tìm được từ trang 1 đến trang 5 của website được hiển thi trên txtLog

Hình 13 Giao diện khi nhấn "Lấy danh sách" của 5 trang đầu tiên website
Sau đó thực hiện nhấn nút “Lấy data” thì toàn bộ thông tin của từng doanh nghiệp
được hiển thị ra txtLog bao gồm:
- Tên doanh nghiệp
- Email
- Địa chỉ
- Hotline
Khi thấy có dòng “Lấy data xong” có nghĩa là toàn bộ thông tin doanh nghiệp của 5
trang đầu website đã được quét xong

Xây dựng ứng dụng quét email & thông tin doanh nghiệp từ website sử dụng C#
25

Hình 14 Giao diện nhấn nút Lấy Data


Sau đó nhấn “Lưu Excel” -> chọn ổ để lưu -> điền tên file -> Save

Sau khi chọn Save màn hình hiện thị ra thông báo “Xuất excel thành công” và hỏi
có muốn mở file đó ra không.
Xây dựng ứng dụng quét email & thông tin doanh nghiệp từ website sử dụng C#
26

Chọn Yes file excel lưu thông tin doanh nghiệp sẽ được mở lên và có giao diện như
sau:

=>> Kết thúc phần quét thông tin doanh nghiệp

Xây dựng ứng dụng quét email & thông tin doanh nghiệp từ website sử dụng C#
27

KẾT LUẬN

Ứng dụng “Quét email & thông tin doanh nghiệp sử dụng C#” giúp cho cá
nhân, công ty, doanh nghiệp dễ dàng, tối ưu và tiết kiệm hơn trong việc marketing
sản phẩm, dịch vụ.

Với thời gian và năng lực có hạn, trong một thời gian em đã nghiên cứu và
sử dụng ngôn ngữ lập trình C# để xây dựng ứng dụng “Quét email & thông tin
doanh nghiệp sử dụng C#”. Trong quá trình thực hiện, không thể tránh khỏi những
thiếu sót. Kính mong sự thông cảm, góp ý và bổ sung của các thầy cô và các bạn để
ứng dụng ngày càng hoàn thiện hơn.
Em xin chân thành cảm ơn!

Xây dựng ứng dụng quét email & thông tin doanh nghiệp từ website sử dụng C#
28

TÀI LIỆU THAM KHẢO


Các tài liệu trên mạng
Các trang Web: http://www.Google.com.vn
Chat gpt

Xây dựng ứng dụng quét email & thông tin doanh nghiệp từ website sử dụng C#

You might also like