কম্পিউটার টিউটোরিয়াল

সহজে ওয়েবসাইট ডেটা এক্সেলে ইম্পোর্ট করুন: ধাপে ধাপে গাইড

সুপরিচিত যে ভেষজ জগত অপ্রসারিত hasznul ডেটা ধারণ করে। যecutable, আমাদের যেকোনো ধরনের অ্যানালিসিস করার আগে ডেটাকে মাইক্রোসফট এক্সেলে ইম্পোর্ট করতে হয়। এই ধরনের টাস্ক সম্পন্ন করার জন্য আপনি দুটি মেথড ব্যবহার করতে পারেন।

ম্যানুয়ালি ওয়েব থেকে এক্সটার্নাল ডেটা পান

মান লেন, আপনি এই ওয়েব পেজ থেকে টপ মানিমেকিং মুভি সম্পর্কে রেভেনিউ ডাউনলোড করতে চান, এখানে দেখানো হয়েছে কীভাবে সহজে করা যায়।

মাইক্রোসফট এক্সেল খুলুন এবং Data ট্যাবে ক্লিক করুন, Get External Data গ্রুপে, From Web-এ ক্লিক করুন। New Web Query ডায়লগ বক্স আসার পর, ওয়েব অ্যাড্রেস (https://www.the-numbers.com/movie/records/All-Time-Worldwide-Box-Office) Address ফিল্ডে কপি করুন এবং Go বাটনে ক্লিক করুন। এক্সেল ওয়েব পেজ ডাউনলোড করা শুরু করবে যা Figure 1.1-এ দেখানো হয়েছে। আপনি যদি Script Error ওয়ার্নিং বক্স পান যা নিচের ফিগারের মত, তবে সেখানে No-এ ক্লিক করুন। বক্সটি গায়েব হয়ে যাবে এবং আপনার ইম্পোর্ট প্রসেসে কোনো প্রভাব ফেলবে না।

সহজে ওয়েবসাইট ডেটা এক্সেলে ইম্পোর্ট করুন: ধাপে ধাপে গাইড

Figure 1.1

New Web Query ডায়লগ বক্সের উপরের ডান কোণয় পীয়স বক্সে একটি অ্যারো রয়েছে। সেটিতে ক্লিক করলে আপনি নির্ধারণ করতে পারবেন টেবিলের আগে সাদৃশ্য আইকন দেখাবে কিনা। উদাহরণস্বরূপ, Figure 1.2-র বাম প্যানেলে টেবিলের পাশে কোনো অ্যারো আইকন নেই। এবং অ্যারো বাটনে ক্লিক করলে আইকন দেখাবে (ডান প্যানেলে)।

সহজে ওয়েবসাইট ডেটা এক্সেলে ইম্পোর্ট করুন: ধাপে ধাপে গাইড

Figure 1.2 [ছবিতে ক্লিক করুন ফুল ভিউ পেতে]

আপনি যে টেবিলগুলো সিলেক্ট করতে চান তাদের পাশের অ্যারো আইকনে ক্লিক করুন। আইকন এবং টেবিলগুলো পরিবর্তন হবে এবং Figure 1.3-র বাম প্যানেলের মতো দেখাবে। Import-এ ক্লিক করার পর একটি Import Data ডায়লগ বক্স প্রম্পট হবে। রেঞ্জটি ফিল আপ করুন (আমাদের কেসে কলাম A থেকে কলাম H পর্যন্ত) যেখানে আপনি ডেটা রাখতে চান এবং OK-এ ক্লিক করুন। সহজে ওয়েবসাইট ডেটা এক্সেলে ইম্পোর্ট করুন: ধাপে ধাপে গাইড

Figure 1.3 [ছবিতে ক্লিক করুন ফুল ভিউ পেতে]

Ok-এ ক্লিক করার পর ডেটা এক্সেলে ইম্পোর্ট হবে। আপনি টেবিলের যেকোনো সেলে রাইট-ক্লিক করে Refresh সিলেক্ট করলে, এক্সেল ওয়েব পেজ থেকে সবচেয়ে সাম্প্রতিক ডেটা পুল আউট করবে। সহজে ওয়েবসাইট ডেটা এক্সেলে ইম্পোর্ট করুন: ধাপে ধাপে গাইড

Figure 1.4

আপনি আপনার কোয়েরি ডেটাকে আপনার ইচ্ছামতো রিফ্রেশ করতে সেট করতে পারেন। টেবিলের যেকোনো সেলে রাইট-ক্লিক করুন, Data Range Properties সিলেক্ট করুন। প্রম্পট হওয়া External Data Range Properties ডায়লগ বক্সে, আপনি Refresh Control সেটিংস পরিবর্তন করে স্টাইল চেঞ্জ করতে পারেন। উদাহরণস্বরূপ, আপনি কোয়েরিকে প্রতি ৬০ মিনিটে বা ফাইল ওপেন হলে রিফ্রেশ হওয়া নির্দিষ্ট করতে পারেন।

সহজে ওয়েবসাইট ডেটা এক্সেলে ইম্পোর্ট করুন: ধাপে ধাপে গাইড

VBA প্রোগ্রামিং ব্যবহার করে ডেটা স্ক্রেপ করুন

VBA প্রোগ্রামিং ব্যবহার করে ওয়েব পেজ থেকে ডেটা স্ক্রেপ করা যায়। প্রথম পদ্ধতির সাথে তুলনা করলে এটি অনেক বেশি উপকারী কিন্তু কঠিন। আরও, আপনাকে HTML কী সেটি বুঝতে হবে VBA প্রোগ্রামিং ব্যবহার করে ডেটা স্ক্রেপ শিখার আগে। আমি আপনাকে বেসিক HTML নলেজ এই ওয়েবসাইট থেকে শিখতে রিকমেন্ড করি যদি আপনি HTML সম্পর্কে কিছুই না জানেন বা কম জানেন। এবং এখান থেকে আপনি VBA ব্যবহার করে ওয়েব স্ক্রেপিং সম্পর্কে প্রায় সব কিছু শিখতে পারেন। এই আর্টিকেলে কেবল দুটি উদাহরণ দেখানো হবে।

একটি ওয়েব পেজ থেকে ডেটা স্ক্রেপ করুন

মান লেন, আমরা এই ওয়েব পেজ থেকে কোম্পানির নাম, ইমেইল অ্যাড্রেস, এবং কন্ট্যাক্ট নাম এক্সট্র্যাক্ট করতে চাই। আপনি এই ওয়েব পেজ ওপেন করলে, আপনি নিচে একটি কন্ট্যাক্ট ব্লক পাবেন। Figure 2.1 কন্ট্যাক্ট ব্লক এবং সংশ্লিষ্ট সোর্স কোড দেখাচ্ছে। লাল বক্সে থাকা তথ্যগুলো আমাদের যা দরকার। এবং সবুজ আন্ডারলাইন যেগুলো সেগুলোই সঠিক যা আমাদের এক্সট্র্যাক্ট করতে হবে।

সহজে ওয়েবসাইট ডেটা এক্সেলে ইম্পোর্ট করুন: ধাপে ধাপে গাইড

Figure 2.1

নিচের কোডটি আপনাকে উপরের অনুরোধকৃত তথ্য এক্সট্র্যাক্ট করতে সাহায্য করবে এবং সেগুলো প্রথম ওয়ার্কশিটে রাখবে।

Source codeসহজে ওয়েবসাইট ডেটা এক্সেলে ইম্পোর্ট করুন: ধাপে ধাপে গাইড সহজে ওয়েবসাইট ডেটা এক্সেলে ইম্পোর্ট করুন: ধাপে ধাপে গাইড সহজে ওয়েবসাইট ডেটা এক্সেলে ইম্পোর্ট করুন: ধাপে ধাপে গাইড 
Sub Retrieve_Click()   'Create InternetExplorer Set IE = CreateObject("InternetExplorer.Application")   'Let's not see the browser window IE.Visible = False   'Open the web page IE.Navigate "https://www.austrade.gov.au/SupplierDetails.aspx?ORGID=ORG8160044431&folderid=1736"   'Wait while IE is loading Do While IE.readyState <> 4 Or IE.Busy = True   DoEvents   Loop   'Retrieve company name, email address & contact information Set contactobj = IE.document.getElementsByClassName("contact-details block dark")   htext = contactobj(0).innerHTML   MsgBox htext   If InStr(htext, "<p>Company Name: ") Then   ThisWorkbook.Worksheets(1).Cells(1, 1) = Split(Split(htext, "<p>Company Name: ")(1), "<br")(0)   End If   If InStr(htext, "mailto:") Then   ThisWorkbook.Worksheets(1).Cells(2, 1) = Split(Split(htext, "mailto:")(1), Chr(34) & ">")(0)   End If   If InStr(htext, "<p>Name: ") Then   ThisWorkbook.Worksheets(1).Cells(3, 1) = Split(Split(htext, "<p>Name: ")(1), "<br")(0)   End If   ThisWorkbook.Worksheets(1).Cells(4, 1) = IE.LocationURL   ThisWorkbook.Save   Set IE = Nothing   Set contactobj = Nothing   End Sub

“IE.document.getElementsByClassName(“contact-details block dark”)” আপনাকে সক্ষম করে ক্লাস নাম – contact-details block dark 가진 সকল এলিমেন্ট পেতে। এই ওয়েব পেজ تقريبا সকল প্রপার্টি এবং মেথড লিস্ট করে যা HTML এলিমেন্টে ব্যবহার করা যায়। আপনি আপনার সমস্যা অনুযায়ী উপযুক্তটি বেছে নিতে পারেন।

innerHTML প্রপার্টি আপনাকে একটি HTML এলিমেন্টের কন্টেন্ট সেট বা রিটার্ন করতে দেয়। আমাদের কেসে, এটি ক্লাস নাম "contact-details block dark " 가진 এলিমেন্টের কন্টেন্ট রিটার্ন করল এবং একটি ভেরিয়েবল htext-এ সেট করল। কন্টেন্টটি (Figure 2.2) 'Msgbox htext'-দিয়ে প্রম্পট করা যায়।

সহজে ওয়েবসাইট ডেটা এক্সেলে ইম্পোর্ট করুন: ধাপে ধাপে গাইড

Figure 2.2

আপনি দেখতে পাচ্ছেন টেক্সটটি ভালোভাবে স্ট্রাকচারড। তাই আমরা SPLIT ফাংশন ব্যবহার করে যা দরকার সেটি এক্সট্র্যাক্ট করতে পারি। উদাহরণস্বরূপ, যদি আমরা “<p>Company Name:” কে ডিলিমিটার হিসেবে নিই এবং ফর্মুলা “Split(htext, “<p>Company Name: “)(1)” ব্যবহার করি তবে “<p>Company Name:”-এর পরের পুরো টেক্সট রিটার্ন করবে। এই নতুন রিটার্ন করা টেক্সটের জন্য, আমরা “<br” কে ডিলিমিটার হিসেবে নিতে পারি এবং প্রথম “<br”-এর আগের টেক্সট পেতে পারি এবং সেটিই কোম্পানির নাম। সারসংক্ষেপে, SPLIT ফাংশন একটি ফ্লেক্সিবল টুল যা আপনি প্রায় সব কিছু এক্সট্র্যাক্ট করতে ব্যবহার করতে পারেন। অন্যান্য উপকারী ফাংশনগুলোর মধ্যে রয়েছে LEN, INSTR, LEFT, RIGHT, MID, এবং REPLACE। এখানে বিস্তারিত আলোচনা করছি না।

Figure 2.2-এ OK-এ ক্লিক করার পর, অনুরোধকৃত ডেটা ওয়েব থেকে এক্সেল ওয়ার্কশিটে ইম্পোর্ট হয়ে যাবে। উদাহরণস্বরূপ, সেল A1-এ কোম্পানির নাম থাকবে যখন সেল A4-এ কোম্পানির ওয়েব পেজ অ্যাড্রেস থাকবে।

সহজে ওয়েবসাইট ডেটা এক্সেলে ইম্পোর্ট করুন: ধাপে ধাপে গাইড

Figure 2.3

নিচের কোডটি ওয়ার্কবুক সেভ করার আগে যোগ করলে, আপনি সেল A4-এ হাইপারলিংক যোগ করতে পারেন।

Source codeসহজে ওয়েবসাইট ডেটা এক্সেলে ইম্পোর্ট করুন: ধাপে ধাপে গাইড সহজে ওয়েবসাইট ডেটা এক্সেলে ইম্পোর্ট করুন: ধাপে ধাপে গাইড সহজে ওয়েবসাইট ডেটা এক্সেলে ইম্পোর্ট করুন: ধাপে ধাপে গাইড 
'Add hyperlink ThisWorkbook.Worksheets(1).Hyperlinks.Add ThisWorkbook.Worksheets(1).Cells(4, 1), ThisWorkbook.Worksheets(1).Cells(4, 1)

আপনি সেল A4-এ ক্লিক করলে, আপনি ওয়েব পেজটি পুনর্বarat করতে পারেন। এটি বিশেষভাবে উপকারী যখন আপনাকে অনেক কোম্পানির জন্য ডেটা রিট্রিভ করতে হয়। যেহেতু আপনি যেকোনো হাইপারলিংকে ক্লিক করে সংশ্লিষ্ট ওয়েব পেজ পুনর্বারাত করতে পারেন এবং পরে রিভিউ করার সময় ম্যানুয়ালি ইনফরমেশন অ্যাড বা আপডেট করতে পারেন।

সহজে ওয়েবসাইট ডেটা এক্সেলে ইম্পোর্ট করুন: ধাপে ধাপে গাইড

Figure 2.4

সাদৃশ্য পড়ুন

  • How to Open Another Workbook and Copy Data with Excel VBA
  • [Fixed!] Method Open of Object Workbooks Failed (4 Solutions)
  • Excel VBA to Populate Array with Cell Values (4 Suitable Examples)
  • How to Open Workbook and Run Macro Using VBA (4 Examples)

ওয়েব পেজের সাথে ইন্টারঅ্যাক্ট করুন

উপরের উদাহরণটি কেবল একটি স্ট্যাটিক ওয়েব পেজ থেকে ডেটা রিট্রিভ করার প্রক্রিয়া ইলাস্ট্রেট করে। لكن অধিকাংশ সময়, আমাদের বড় পরিমাণ ডেটা রিট্রিভ করার জন্য ওয়েব পেজের সাথে ইন্টারঅ্যাক্ট করতে হয়। Figure 3.1-এ দেখুন। এটি আপনাকে উপরের উদাহরণের ওয়েব পেজে কীভাবে যেতে হয় সেটি দেখাচ্ছে। আপনি দেখতে পাচ্ছেন অনেক ইন্ডাস্ট্রি রয়েছে এবং প্রতিটি ইন্ডাস্ট্রির জন্য অনেক কোম্পানি রয়েছে। উদাহরণস্বরূপ, Agribusiness ইন্ডাস্ট্রিতে ৬৫১ কোম্পানি রয়েছে। আমরা কী করব যদি আমরা সব ইন্ডাস্ট্রি থেকে সব কোম্পানির কন্ট্যাক্ট ইনফরমেশন এক্সট্র্যাক্ট করতে চাই?

সহজে ওয়েবসাইট ডেটা এক্সেলে ইম্পোর্ট করুন: ধাপে ধাপে গাইড

Figure 3.1 [ছবিতে ক্লিক করুন ফুল ভিউ পেতে]

হতে, মূল পয়েন্ট হলো VBA কীভাবে ওয়েব পেজের সাথে ইন্টারঅ্যাক্ট করবে যেভাবে আমরা ম্যানুয়ালি করি। S.W.I.S Advantage কে উদাহরণ হিসেবে নিই। সাধারণত, আমরা আশা করি এক্সেল Agribusiness-এ (Figure 3.1-র টপ প্যানেল) ক্লিক করবে এবং তদনুসারে IE আমাদের দ্বিতীয় ওয়েব পেজে নিয়ে যাবে। দ্বিতীয় ওয়েব পেজে (Figure 3.1-র বটম প্যানেল), এক্সেল S.W.I.S Advantage-এ ক্লিক করবে, এবং তারপর IE আমাদের Figure 2.1-এ দেখানো পেজে নিয়ে যাবে যাতে আমরা S.W.I.S Advantage-এর কন্ট্যাক্ট ইনফরমেশন রিট্রিভ করতে পারি।

নিচের কোডটি ভিজুয়াল বেসিক এডিটরে এন্টার করে সাবমিট করলে, আপনি দেখবেন আপনার IE খুলছে। প্রথম ওয়েব পেজ আসবে এবং তারপর দ্বিতীয় ওয়েব পেজ। এখানে আপনি শিখবেন কীভাবে ড্রপ-ডাউন লিস্ট এলিমেন্ট পেতে হয়, একটি অপশন সিলেক্ট করতে হয়, এবং অপশন সিলেক্ট করার পর একটি ইভেন্ট ট্রিগার করতে হয়। “m = IE.document.getElementsByTagName(“option”).Length – 1” আপনাকে টোটাল অপশনের সংখ্যা দেবে। এটি পরবর্তী লুপের জন্য ব্যবহার করা যায়।

Source codeসহজে ওয়েবসাইট ডেটা এক্সেলে ইম্পোর্ট করুন: ধাপে ধাপে গাইড সহজে ওয়েবসাইট ডেটা এক্সেলে ইম্পোর্ট করুন: ধাপে ধাপে গাইড সহজে ওয়েবসাইট ডেটা এক্সেলে ইম্পোর্ট করুন: ধাপে ধাপে গাইড 
Sub retrieve()   'Create InternetExplorer Set IE = CreateObject("InternetExplorer.Application")   'Let's see the browser window IE.Visible = True   'Open the web page IE.Navigate "https://www.austrade.gov.au/international/buy#"   'Wait while IE is loading Do While IE.Busy   Application.Wait DateAdd("s", 1, Now)   Loop   Application.Wait (Now + TimeValue("00:00:10"))   'Part 1 - Select dropdown list and trigger event after you select one option Set selectobj = IE.document.getElementsByTagName("select")   m = IE.document.getElementsByTagName("option").Length - 1   selectobj(0).selectedIndex = 1   selectobj(0).FireEvent ("onchange")   'Wait while IE is loading Do While IE.readyState <> 4 Or IE.Busy = True   Application.Wait DateAdd("s", 1, Now)   Loop   Application.Wait (Now + TimeValue("00:00:10"))   End Sub

কোডের এই অংশ আপনাকে Figure 2.1-এ দেখানো ওয়েব পেজে নিয়ে যাবে এক্সেল প্রথম নামটিতে ক্লিক করার পর। সকল কোম্পানির নাম "Name" ক্লাস নাম 가진 এলিমেন্টে অন্তর্ভুক্ত। Searchobj একটি কালেকশন এবং searchobj(i) (i+1)th অবজেক্ট রিটার্ন করতে পারে। উদাহরণস্বরূপ, searchobj(1).Click আপনাকে RIDLEY CORPORATION (Melbourne)-এর ওয়েব পেজে ভিজিট করতে সক্ষম করবে।

Source codeসহজে ওয়েবসাইট ডেটা এক্সেলে ইম্পোর্ট করুন: ধাপে ধাপে গাইড সহজে ওয়েবসাইট ডেটা এক্সেলে ইম্পোর্ট করুন: ধাপে ধাপে গাইড সহজে ওয়েবসাইট ডেটা এক্সেলে ইম্পোর্ট করুন: ধাপে ধাপে গাইড 
'Part 2 - Select company Name Set searchobj = IE.document.getElementsByClassName("Name")   searchobj(0).Click   'Wait while IE is loading Do While IE.readyState <> 4 Or IE.Busy = True   DoEvents   Loop

শেষে, এখানে পুরো কোডটি যা আপনাকে IE ওপেন করা, ওয়েব পেজ ব্রাউজ করা, এবং ডেটা এক্সট্র্যাক্ট করার প্রসেস দেখাবে। এক্সট্র্যাক্ট করা ডেটা Figure 2.4-এ দেখানো ডেটার মতোই হবে।

Source codeসহজে ওয়েবসাইট ডেটা এক্সেলে ইম্পোর্ট করুন: ধাপে ধাপে গাইড সহজে ওয়েবসাইট ডেটা এক্সেলে ইম্পোর্ট করুন: ধাপে ধাপে গাইড সহজে ওয়েবসাইট ডেটা এক্সেলে ইম্পোর্ট করুন: ধাপে ধাপে গাইড 
Sub Retrieve()   'Create InternetExplorer Set IE = CreateObject("InternetExplorer.Application")   'Let's see the browser window IE.Visible = True   'Open the web page IE.Navigate "https://www.austrade.gov.au/international/buy#"   'Wait while IE is loading Do While IE.Busy   Application.Wait DateAdd("s", 1, Now)   Loop   Application.Wait (Now + TimeValue("00:00:10"))   'Part 1 - Select dropdown list and trigger event after you select one option Set selectobj = IE.document.getElementsByTagName("select")   m = IE.document.getElementsByTagName("option").Length - 1   selectobj(0).selectedIndex = 1   selectobj(0).FireEvent ("onchange")   'Wait while IE is loading Do While IE.readyState <> 4 Or IE.Busy = True   Application.Wait DateAdd("s", 1, Now)   Loop   Application.Wait (Now + TimeValue("00:00:10"))   'Part 2 - Select company Name Set searchobj = IE.document.getElementsByClassName("Name")   searchobj(0).Click   'Wait while IE is loading Do While IE.readyState <> 4 Or IE.Busy = True   DoEvents   Loop   'Part 3 - Retrieve company name, email address & contact information Set contactobj = IE.document.getElementsByClassName("contact-details block dark")   htext = contactobj(0).innerHTML   If InStr(htext, "<p>Company Name: ") Then   ThisWorkbook.Worksheets(1).Cells(1, 1) = Split(Split(htext, "<p>Company Name: ")(1), "<br")(0)   End If   If InStr(htext, "mailto:") Then   ThisWorkbook.Worksheets(1).Cells(2, 1) = Split(Split(htext, "mailto:")(1), Chr(34) & ">")(0)   End If   If InStr(htext, "<p>Name: ") Then   ThisWorkbook.Worksheets(1).Cells(3, 1) = Split(Split(htext, "<p>Name: ")(1), "<br")(0)   End If   ThisWorkbook.Worksheets(1).Cells(4, 1) = IE.LocationURL   'Add hyperlink ThisWorkbook.Worksheets(1).Hyperlinks.Add ThisWorkbook.Worksheets(1).Cells(4, 1), ThisWorkbook.Worksheets(1).Cells(4, 1)   End Sub

আসলে, আমাদের যা দরকার সেটি হলো সব ইন্ডাস্ট্রি থেকে সব কোম্পানির কন্ট্যাক্ট ইনফরমেশন এক্সট্র্যাক্ট করা, তাই আমাদের for loop স্টেটমেন্ট ব্যবহার করে এই টাস্কটি কমপ্লিট করতে হবে। নিচে কমপ্লিট কোডটি দেওয়া হলো। এবং আপনি কোডটি এই আর্টিকেলের শেষে ডাউনলোড করতে পারেন Retrieve contact information for all companies.xlsm ফাইল থেকে।

Source codeসহজে ওয়েবসাইট ডেটা এক্সেলে ইম্পোর্ট করুন: ধাপে ধাপে গাইড সহজে ওয়েবসাইট ডেটা এক্সেলে ইম্পোর্ট করুন: ধাপে ধাপে গাইড সহজে ওয়েবসাইট ডেটা এক্সেলে ইম্পোর্ট করুন: ধাপে ধাপে গাইড 
Sub Retrieve()   For idex = 2 To 18   'Create InternetExplorer Set IE = CreateObject("InternetExplorer.Application")   'Let's see the browser window IE.Visible = False   'Open the web page IE.Navigate "https://www.austrade.gov.au/international/buy#"   'Wait while IE is loading Do While IE.Busy   Application.Wait DateAdd("s", 1, Now)   Loop   Application.Wait (Now + TimeValue("00:00:10"))   idexn = idex - 1   'Part 1 - Select dropdown Set selectobj = IE.document.getElementsByTagName("select")   m = IE.document.getElementsByTagName("option").Length - 1   selectobj(0).selectedIndex = idexn   selectobj(0).FireEvent ("onchange")   'Wait while IE is loading Do While IE.readyState <> 4 Or IE.Busy = True   Application.Wait DateAdd("s", 1, Now)   Loop   Application.Wait (Now + TimeValue("00:00:10"))   wurl = IE.LocationURL   tot = IE.document.getElementsByClassName("SearchTotal")(0).innerHTML   pg = Int(tot / 25) + 1   Max = (tot Mod 25) - 1   'Part 2 - Select Class = "Name" a = 2   For j = 1 To pg   If j = 1 Then   IE.Navigate (wurl)   Else   IE.Navigate (wurl & "&pg=" & j)   End If   Do While IE.Busy   Application.Wait DateAdd("s", 1, Now)   Loop   If j <> pg Then   For i = 1 To 24   Set searchobj = IE.document.getElementsByClassName("Name")   searchobj(i).Click   'Wait while IE is loading Do While IE.readyState <> 4 Or IE.Busy = True   DoEvents   Loop   'Part 3 - Retrieve company name, email address & contact information Set contactobj = IE.document.getElementsByClassName("contact-details block dark")   htext = contactobj(0).innerHTML   ThisWorkbook.Worksheets(idex).Cells(a, 1) = j   ThisWorkbook.Worksheets(idex).Cells(a, 2) = a - 1   If InStr(htext, "<p>Company Name: ") Then   ThisWorkbook.Worksheets(idex).Cells(a, 3) = Split(Split(htext, "<p>Company Name: ")(1), "<br")(0)   End If   If InStr(htext, "mailto:") Then   ThisWorkbook.Worksheets(idex).Cells(a, 4) = Split(Split(htext, "mailto:")(1), Chr(34) & ">")(0)   End If   If InStr(htext, "<p>Name: ") Then   ThisWorkbook.Worksheets(idex).Cells(a, 5) = Split(Split(htext, "<p>Name: ")(1), "<br")(0)   End If   ThisWorkbook.Worksheets(idex).Cells(a, 6) = IE.LocationURL   IE.GoBack   Do While IE.Busy   Application.Wait DateAdd("s", 1, Now)   Loop   a = a + 1   Next i   Else   For i = 0 To Max   Set searchobj = IE.document.getElementsByClassName("Name")   searchobj(i).Click   'Wait while IE is loading Do While IE.readyState <> 4 Or IE.Busy = True   DoEvents   Loop   'Part 3 - Retrieve company name, email address & contact information Set contactobj = IE.document.getElementsByClassName("contact-details block dark")   htext = contactobj(0).innerHTML   ThisWorkbook.Worksheets(idex).Cells(a, 1) = j   ThisWorkbook.Worksheets(idex).Cells(a, 2) = a - 1   If InStr(htext, "<p>Company Name: ") Then   ThisWorkbook.Worksheets(idex).Cells(a, 3) = Split(Split(htext, "<p>Company Name: ")(1), "<br")(0)   End If   If InStr(htext, "mailto:") Then   ThisWorkbook.Worksheets(idex).Cells(a, 4) = Split(Split(htext, "mailto:")(1), Chr(34) & ">")(0)   End If   If InStr(htext, "<p>Name: ") Then   ThisWorkbook.Worksheets(idex).Cells(a, 5) = Split(Split(htext, "<p>Name: ")(1), "<br")(0)   End If   ThisWorkbook.Worksheets(idex).Cells(a, 6) = IE.LocationURL   ThisWorkbook.Worksheets(idex).Hyperlinks.Add ThisWorkbook.Worksheets(idex).Cells(a, 6), ThisWorkbook.Worksheets(idex).Cells(a, 6)   IE.GoBack   Do While IE.Busy   Application.Wait DateAdd("s", 1, Now)   Loop   a = a + 1   Next i   End If   ThisWorkbook.Save   Next j   Set IE = Nothing   Set contactobj = Nothing   Next idex   End Sub

একমাত্র পয়েন্ট যা আমাকে ব্যাখ্যা করতে হচ্ছে তা Figure 3.2-এ ইলাস্ট্রেট করা হয়েছে। একটি ওয়েব পেজ কেবল ২৫ কোম্পানি পর্যন্ত লিস্ট করতে পারে। যখন টোটাল কোম্পানির সংখ্যা ২৫ এর বেশি হয়, তখন একাধিক পেজ থাকবে। Figure 3.2 দেখাচ্ছে যে প্রথম পেজের পরে পেজের অ্যাড্রেস পাওয়ার একটি রুল রয়েছে। এটি প্রথম পেজের অ্যাড্রেস, “&pg=” এবং আসল পেজ নম্বর কনক্যাটেনেট করার ফলাফল। এবং লাস্ট পেজের আগের সকল পেজের জন্য টোটাল অবজেক্ট সংখ্যা ২৫। “IE.document.getElementsByClassName(“SearchTotal”)(0).innerHTML” একটি ইন্ডাস্ট্রির মধ্যে টোটাল কোম্পানির সংখ্যা রিটার্ন করতে পারে। আমাদের কেসে, এটি ৬৫১ হবে। “Int(tot / 25) + 1” আপনাকে টোটাল পেজের সংখ্যা দেবে। এবং “Max = (tot Mod 25) – 1” লাস্ট পেজে मैक्स কোম্পানির সংখ্যা রিটার্ন করবে। আমি এখানে থামছি এবং আপনাকে কোডে এই আইডিয়া প্রয়োগ করতে ছেড়ে দিচ্ছি। কোড বুঝতে এটি একটি 베তার অ্যাপ্রোচ। আপনার যদি প্রশ্ন থাকে তবে কমেন্ট করুন।

সহজে ওয়েবসাইট ডেটা এক্সেলে ইম্পোর্ট করুন: ধাপে ধাপে গাইড

Figure 3.2

এখানে ফাইনাল এক্সেলের একটি অংশ দেখানো হয়েছে। একটি ইন্ডাস্ট্রির মধ্যে সকল কোম্পানির কন্ট্যাক্ট ইনফরমেশন একসাথে একটি ওয়ার্কশিটে রাখা হয়েছে।

সহজে ওয়েবসাইট ডেটা এক্সেলে ইম্পোর্ট করুন: ধাপে ধাপে গাইড

Figure 3.3 [ছবিতে ক্লিক করুন ফুল ভিউ পেতে]

ওয়ার্কিং ফাইল ডাউনলোড করুন

নিচের লিংক থেকে ওয়ার্কিং ফাইল ডাউনলোড করুন।

Pull-Data-from-Web-to-Excel.rar

সম্পর্কিত আর্টিকেল

  • How to extract data from website to Excel automatically?
  • Import Data (Sentence, Paragraphs, Tables, Comments) from Word to Excel
  • 6 Best Excel VBA Programming Books (For Beginners & Advanced Users)
  • Learn Excel VBA Programming & Macros (Free Tutorial – Step by Step)
  • Excel VBA Coding Tips
  • What You Can Do with VBA
  • Introduction to VBA Macros


  1. টেক্সট ফাইল ডেটা এক্সেলে ইম্পোর্ট: ৩টি প্রমাণিত পদ্ধতি সঠিক ফলাফলের জন্য

  2. সার্ভে ফলাফল সহজে এক্সেলে এক্সপোর্ট করুন: ধাপে ধাপ গাইড

  3. ধাপে ধাপ গাইড: এক্সেলে গুণগত প্রশ্নাবলি ডেটা বিশ্লেষণ

  4. এক্সেল ডেটা মডেল থেকে ডেটা রিট্রিভ: ২টি সহজ, প্রমাণিত পদ্ধতি