समस्या:
डेटा साइंटिस्ट के लिए सबसे चुनौतीपूर्ण कार्यों में से एक डेटा एकत्र करना है। जबकि तथ्य यह है कि वेब में बहुत सारा डेटा उपलब्ध है, यह सिर्फ ऑटोमेशन के माध्यम से डेटा निकालने की बात है।
परिचय
मैं https://www.tutorialspoint.com/python/python_basic_operators.htm से HTML टेबल्स में एम्बेडेड बेसिक ऑपरेशंस डेटा निकालना चाहता था।
हम्म, डेटा कई HTML टेबल्स में बिखरा हुआ है, अगर केवल एक HTML टेबल होती तो जाहिर है मैं कॉपी और पेस्ट करके .csv फाइल बना सकता था।
हालांकि, अगर एक ही पेज में 5 से अधिक टेबल्स हैं तो जाहिर तौर पर यह दर्दनाक है। है ना?
इसे कैसे करें
1. मैं आपको जल्दी से दिखाऊंगा कि अगर आप CSV फाइल बनाना चाहते हैं तो इसे आसानी से कैसे बनाएं।
import csv
# फाइल को राइट मोड में खोलें, अगर नहीं मिली तो एक बन जाएगी
File = open('test.csv', 'w+')
Data = csv.writer(File)
# मेरा हेडर
Data.writerow(('Column1', 'Column2', 'Column3'))
# डेटा लिखें
for i in range(20):
Data.writerow((i, i+1, i+2))
# मेरी फाइल बंद करें
File.close()
आउटपुट
उपरोक्त कोड जब एक्जीक्यूट होता है तो इसी डायरेक्टरी में test.csv फाइल बनाता है।

2. अब आइए https://www.tutorialspoint.com/python/python_dictionary.htm से एक HTML टेबल रिट्रीव करें और इसे CSV फाइल के रूप में लिखें।
पहला चरण इम्पोर्ट करना है।
import csv from urllib.request import urlopen from bs4 import BeautifulSoup url = 'https://www.tutorialspoint.com/python/python_dictionary.htm'
HTML फाइल खोलें और urlopen का उपयोग करके इसे html ऑब्जेक्ट में स्टोर करें।
आउटपुट
html = urlopen(url) soup = BeautifulSoup(html, 'html.parser')
HTML टेबल के अंदर टेबल्स ढूंढें और टेबल्स डेटा लाएं। प्रदर्शन उद्देश्य के लिए मैं केवल पहली टेबल [0] निकालूंगा।
आउटपुट
table = soup.find_all('table')[0]
rows = table.find_all('tr')
आउटपुट
print(rows)
आउटपुट
[<tr> <th style='text-align:center;width:5%'>Sr.No.</th> <th style='text-align:center;width:95%'>Function with Description</th> </tr>, <tr> <td class='ts'>1</td> <td><a href='/python/dictionary_cmp.htm'>cmp(dict1, dict2)</a> <p>Compares elements of both dict.</p></td> </tr>, ...]
5. अब हम डेटा को CSV फाइल में लिखेंगे।
उदाहरण
File = open('my_html_data_to_csv.csv', 'wt+')
Data = csv.writer(File)
try:
for row in rows:
FilteredRow = []
for cell in row.find_all(['td', 'th']):
FilteredRow.append(cell.get_text())
Data.writerow(FilteredRow)
finally:
File.close()
6. परिणाम अब my_html_data_to_csv.csv फाइल में सेव हैं।
उदाहरण
हम ऊपर बताई गई सभी चीजों को एक साथ रखेंगे।
उदाहरण
import csv
from urllib.request import urlopen
from bs4 import BeautifulSoup
# URL सेट करें
url = 'https://www.tutorialspoint.com/python/python_basic_syntax.htm'
# URL खोलें और HTML पार्स करें
html = urlopen(url)
soup = BeautifulSoup(html, 'html.parser')
# पहली टेबल निकालें
table = soup.find_all('table')[0]
rows = table.find_all('tr')
# कंटेंट को फाइल में लिखें
File = open('my_html_data_to_csv.csv', 'wt+')
Data = csv.writer(File)
try:
for row in rows:
FilteredRow = []
for cell in row.find_all(['td', 'th']):
FilteredRow.append(cell.get_text())
Data.writerow(FilteredRow)
finally:
File.close()
HTML पेज में टेबल।
