पायथन का उपयोग करके Google मैप्स से डेटा स्क्रैप करने से स्थानों, व्यवसायों और सेवाओं के बारे में मूल्यवान जानकारी के संग्रह की अनुमति मिलती है, जो बाजार विश्लेषण के लिए फायदेमंद है, इष्टतम नए स्थल स्थानों की पहचान करना, वर्तमान निर्देशिकाओं, प्रतियोगी विश्लेषण को बनाए रखना, और स्थानों की लोकप्रियता का पता लगाना। यह गाइड पायथन लाइब्रेरी रिक्वेस्ट और एलएक्सएमएल का उपयोग करते हुए Google मैप्स से जानकारी निकालने के तरीके पर एक व्यापक वॉकथ्रू प्रदान करता है। इसमें अनुरोध करने, प्रतिक्रियाओं को संभालने, संरचित डेटा को पार्स करने और इसे CSV फ़ाइल में निर्यात करने के लिए विस्तृत निर्देश शामिल हैं।
सुनिश्चित करें कि आपके पास निम्नलिखित पायथन लाइब्रेरी स्थापित हैं:
यदि आवश्यक हो तो PIP का उपयोग करके इन पुस्तकालयों को स्थापित करें:
pip install requests
pip install lxml
नीचे, हम उदाहरणों के साथ पूरा, स्क्रैपिंग की एक चरण-दर-चरण प्रक्रिया प्रस्तुत करेंगे।
निम्नलिखित वर्गों में, हम Google मैप्स से डेटा को स्क्रैप करने के लिए एक विस्तृत चरण-दर-चरण प्रक्रिया के माध्यम से चलेंगे, प्रत्येक चरण के माध्यम से मार्गदर्शन करने के लिए दृश्य उदाहरणों के साथ पूरा करें।
वह URL निर्दिष्ट करें जिससे आप डेटा को परिमार्जन करना चाहते हैं।
url = "https link"
एक वास्तविक उपयोगकर्ता की गतिविधियों की नकल करने के लिए उपयुक्त हेडर स्थापित करना महत्वपूर्ण है, जिससे बॉट के रूप में ध्वजांकित होने की संभावना को काफी कम कर दिया जाता है। इसके अतिरिक्त, प्रॉक्सी सर्वर को एकीकृत करना किसी भी ब्लॉक को दरकिनार करके निरंतर स्क्रैपिंग गतिविधियों को बनाए रखने में मदद करता है जो एकल आईपी पते से जुड़े अनुरोध सीमाओं से अधिक हो सकता है।
headers = {
'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
'accept-language': 'en-IN,en;q=0.9',
'cache-control': 'no-cache',
'dnt': '1',
'pragma': 'no-cache',
'priority': 'u=0, i',
'sec-ch-ua': '"Not)A;Brand";v="99", "Google Chrome";v="127", "Chromium";v="127"',
'sec-ch-ua-arch': '"x86"',
'sec-ch-ua-bitness': '"64"',
'sec-ch-ua-full-version-list': '"Not)A;Brand";v="99.0.0.0", "Google Chrome";v="127.0.6533.72", "Chromium";v="127.0.6533.72"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-model': '""',
'sec-ch-ua-platform': '"Linux"',
'sec-ch-ua-platform-version': '"6.5.0"',
'sec-ch-ua-wow64': '?0',
'sec-fetch-dest': 'document',
'sec-fetch-mode': 'navigate',
'sec-fetch-site': 'none',
'sec-fetch-user': '?1',
'upgrade-insecure-requests': '1',
'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36',
}
proxies = {
"http": "http://username:password@your_proxy_ip:port",
"https": "https://username:password@your_proxy_ip:port",
}
Google मानचित्र URL को एक अनुरोध भेजें और पृष्ठ सामग्री प्राप्त करें:
import requests
response = requests.get(url, headers=headers, proxies=proxies)
if response.status_code == 200:
page_content = response.content
else:
print(f"Failed to retrieve the page. Status code: {response.status_code}")
HTML सामग्री को पार्स करने के लिए LXML का उपयोग करें:
from lxml import html
parser = html.fromstring(page_content)
HTML दस्तावेज़ की संरचना को समझना डेटा को सही ढंग से निकालने के लिए महत्वपूर्ण है। आपको उन डेटा बिंदुओं के लिए XPath अभिव्यक्तियों की पहचान करने की आवश्यकता है जिन्हें आप स्क्रैप करना चाहते हैं। यहां बताया गया है कि आप इसे कैसे कर सकते हैं:
रेस्तरां का नाम:
//div[@jscontroller="AtSb"]/div/div/div/a/div/div/div/span[@class="OSrXXb"]/text()
पता:
//div[@jscontroller="AtSb"]/div/div/div/a/div/div/div[2]/text()
विकल्प:
= ', '.join(result.xpath('.//div[@jscontroller="AtSb"]/div/div/div/a/div/div/div[4]/div/span/span[1]//text()'))
भू -अक्षांश:
//div[@jscontroller="AtSb"]/div/@data-lat
भू देश:
//div[@jscontroller="AtSb"]/div/@data-lng
पहचान किए गए XPATH का उपयोग करके डेटा निकालें:
results = parser.xpath('//div[@jscontroller="AtSb"]')
data = []
for result in results:
restaurant_name = result.xpath('.//div/div/div/a/div/div/div/span[@class="OSrXXb"]/text()')[0]
address = result.xpath('.//div/div/div/a/div/div/div[2]/text()')[0]
options = ', '.join(result.xpath('.//div/div/div/a/div/div/div[4]/div/span/span[1]//text()'))
geo_latitude = result.xpath('.//div/@data-lat')[0]
geo_longitude = result.xpath('.//div/@data-lng')[0]
# डेटा सूची में जोड़ें
data.append({
"restaurant_name": restaurant_name,
"address": address,
"options": options,
"geo_latitude": geo_latitude,
"geo_longitude": geo_longitude
})
निकाले गए डेटा को CSV फ़ाइल में सहेजें:
import csv
with open("google_maps_data.csv", "w", newline='', encoding='utf-8') as csv_file:
writer = csv.DictWriter(csv_file, fieldnames=["restaurant_name", "address", "options", "geo_latitude", "geo_longitude"])
writer.writeheader()
for entry in data:
writer.writerow(entry)
यहाँ Google मानचित्र डेटा को स्क्रैप करने के लिए पूरा कोड है:
import requests
from lxml import html
import csv
# लक्ष्य URL और हेडर को परिभाषित करें
url = "https://www.google.com/search?sca_esv=04f11db33f1535fb&sca_upv=1&tbs=lf:1,lf_ui:4&tbm=lcl&sxsrf=ADLYWIIFVlh6WQCV6I2gi1yj8ZyvZgLiRA:1722843868819&q=google+map+restaurants+near+me&rflfq=1&num=10&sa=X&ved=2ahUKEwjSs7fGrd2HAxWh1DgGHbLODasQjGp6BAgsEAE&biw=1920&bih=919&dpr=1"
headers = {
'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
'accept-language': 'en-IN,en;q=0.9',
'cache-control': 'no-cache',
'dnt': '1',
'pragma': 'no-cache',
'priority': 'u=0, i',
'sec-ch-ua': '"Not)A;Brand";v="99", "Google Chrome";v="127", "Chromium";v="127"',
'sec-ch-ua-arch': '"x86"',
'sec-ch-ua-bitness': '"64"',
'sec-ch-ua-full-version-list': '"Not)A;Brand";v="99.0.0.0", "Google Chrome";v="127.0.6533.72", "Chromium";v="127.0.6533.72"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-model': '""',
'sec-ch-ua-platform': '"Linux"',
'sec-ch-ua-platform-version': '"6.5.0"',
'sec-ch-ua-wow64': '?0',
'sec-fetch-dest': 'document',
'sec-fetch-mode': 'navigate',
'sec-fetch-site': 'none',
'sec-fetch-user': '?1',
'upgrade-insecure-requests': '1',
'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36',
}
proxies = {
"http": "http://username:password@your_proxy_ip:port",
"https": "https://username:password@your_proxy_ip:port",
}
# पृष्ठ सामग्री प्राप्त करें
response = requests.get(url, headers=headers, proxies=proxies)
if response.status_code == 200:
page_content = response.content
else:
print(f"Failed to retrieve the page. Status code: {response.status_code}")
exit()
# HTML सामग्री को पार्स करें
parser = html.fromstring(page_content)
# XPath का उपयोग करके डेटा निकालें
results = parser.xpath('//div[@jscontroller="AtSb"]')
data = []
for result in results:
restaurant_name = result.xpath('.//div/div/div/a/div/div/div/span[@class="OSrXXb"]/text()')[0]
address = result.xpath('.//div/div/div/a/div/div/div[2]/text()')[0]
options = ', '.join(result.xpath('.//div/div/div/a/div/div/div[4]/div/span/span[1]//text()'))
geo_latitude = result.xpath('.//div/@data-lat')[0]
geo_longitude = result.xpath('.//div/@data-lng')[0]
# डेटा सूची में जोड़ें
data.append({
"restaurant_name": restaurant_name,
"address": address,
"options": options,
"geo_latitude": geo_latitude,
"geo_longitude": geo_longitude
})
# CSV के लिए डेटा सहेजें
with open("google_maps_data.csv", "w", newline='', encoding='utf-8') as csv_file:
writer = csv.DictWriter(csv_file, fieldnames=["restaurant_name", "address", "options", "geo_latitude", "geo_longitude"])
writer.writeheader()
for entry in data:
writer.writerow(entry)
print("Data has been successfully scraped and saved to google_maps_data.csv.")
प्रभावी वेब स्क्रैपिंग के लिए, सही अनुरोध हेडर और प्रॉक्सी का उपयोग करना महत्वपूर्ण है। इष्टतम प्रॉक्सी विकल्प डेटा सेंटर या आईएसपी प्रॉक्सी हैं, जो उच्च गति और कम विलंबता प्रदान करते हैं। हालांकि, चूंकि ये स्थिर प्रॉक्सी हैं, इसलिए प्रभावी रूप से अवरुद्ध करने को रोकने के लिए आईपी रोटेशन को लागू करना आवश्यक है। एक वैकल्पिक और अधिक उपयोगकर्ता के अनुकूल विकल्प आवासीय प्रॉक्सी का उपयोग करना है। ये गतिशील परदे के पीछे रोटेशन प्रक्रिया को सरल बनाते हैं और एक उच्च ट्रस्ट कारक होता है, जिससे वे ब्लॉक को दरकिनार करने में अधिक प्रभावी होते हैं।
टिप्पणियाँ: 0