সমস্যা:
একজন ডাটা সাইন্টিস্টের জন্য সবচেয়ে চ্যালেঞ্জিং টাকের মধ্যে একটি হল ডাটা সংগ্রহ করা। যদিও বাস্তবতা হল, ওয়েবে প্রচুর ডেটা উপলব্ধ রয়েছে এটি কেবলমাত্র অটোমেশনের মাধ্যমে ডেটা আহরণ করছে৷
পরিচয়..
আমি https://www.tutorialspoint.com/python/python_basic_operators.htm থেকে এইচটিএমএল টেবিলে এম্বেড করা মৌলিক অপারেশন ডেটা বের করতে চেয়েছিলাম।
হুমম, ডেটা অনেক HTML টেবিলে ছড়িয়ে ছিটিয়ে আছে, যদি শুধুমাত্র একটি HTML টেবিল থাকে তাহলে অবশ্যই আমি .csv ফাইলে কপি এবং পেস্ট ব্যবহার করতে পারি।
তবে, যদি এক পাতায় 5টির বেশি টেবিল থাকে তবে স্পষ্টতই ব্যথা হয়। তাই না?
কিভাবে করতে হবে..
1.আপনি যদি একটি csv ফাইল তৈরি করতে চান তাহলে আমি আপনাকে দ্রুত দেখাব কিভাবে সহজে একটি csv ফাইল তৈরি করা যায়৷
csv# ফাইলটি লিখুন মোডে খুলুন, যদি না পাওয়া যায় তবে এটি oneFile =open('test.csv', 'w+')Data =csv.writer(ফাইল)# My HeaderData.writerow(('Column1') তৈরি করবে , 'কলাম2', 'কলাম3'))# রেঞ্জে i এর জন্য ডেটা লিখুন(20):Data.writerow((i, i+1, i+2))# আমার fileFile.close()
আউটপুট
উপরের কোডটি কার্যকর করা হলে এই কোডের মতো একই ডিরেক্টরিতে একটি test.csv ফাইল তৈরি করে।
2. আসুন এখন https://www.tutorialspoint.com/python/python_dictionary.htm থেকে একটি HTML টেবিল পুনরুদ্ধার করি এবং এটিকে একটি CSV ফাইল হিসাবে লিখি৷
প্রথম ধাপ হল আমদানি করা।
urllib.request থেকে csv import করুন
-
HTML ফাইলটি খুলুন এবং urlopen ব্যবহার করে html অবজেক্টে সংরক্ষণ করুন।
আউটপুট
html =urlopen(url)স্যুপ =সুন্দর স্যুপ(html, 'html.parser')
-
html টেবিলের ভিতরে টেবিলগুলি খুঁজুন এবং টেবিলের ডেটা নিয়ে আসা যাক। প্রদর্শনের উদ্দেশ্যে আমি শুধুমাত্র প্রথম টেবিলটি বের করব [0]
আউটপুট
টেবিল =soup.find_all('table')[0]rows =table.find_all('tr')
আউটপুট
মুদ্রণ(সারি)
আউটপুট
[, Sr.No. ফাংশন বর্ণনা সহ , 1 cmp(dict1, dict2) উভয় ডিক্টের উপাদানের তুলনা করে।
, 2 len(dict) অভিধানের মোট দৈর্ঘ্য দেয়। এটি অভিধানে আইটেমের সংখ্যার সমান হবে৷
, 3 str(dict) একটি অভিধানের একটি মুদ্রণযোগ্য স্ট্রিং উপস্থাপনা তৈরি করে
] 4 type(ভেরিয়েবল) পাস করা ভেরিয়েবলের ধরন দেখায়। পাস করা ভেরিয়েবল যদি অভিধান হয়, তাহলে এটি একটি অভিধানের ধরন প্রদান করবে।
5.এখন আমরা csv ফাইলে ডেটা লিখব।
উদাহরণ
ফাইল =open('my_html_data_to_csv.csv', 'wt+')Data =csv.writer(ফাইল) চেষ্টা করুন:সারি সারির জন্য:FilteredRow =[] row.find_all(['td','th)-এর ঘরের জন্য ']):FilteredRow.append(cell.get_text())Data.writerow(FilteredRow)শেষে:File.close()
6. ফলাফলগুলি এখন my_html_data_to_csv.csv ফাইলে সংরক্ষিত হয়েছে৷
উদাহরণ
আমরা উপরে ব্যাখ্যা করা সবকিছু একসাথে রাখব।
উদাহরণ
cvfrom urllib.request import urlopenfrom bs4 import BeautifulSoup# url সেট করুন )soup =BeautifulSoup(html, 'html.parser')# প্রথম tabletable বের করুন =soup.find_all('table')[0]rows =table.find_all('tr')# ফাইলে বিষয়বস্তু লিখুনFile =open( 'my_html_data_to_csv.csv', 'wt+')Data =csv.writer(ফাইল) চেষ্টা করুন:সারি সারির জন্য:FilteredRow =[] row-এ ঘরের জন্য.find_all(['td', 'th']):FilteredRow.append (cell.get_text())Data.writerow(FilteredRow)শেষে:File.close()
html পৃষ্ঠায় টেবিল।