Craigslist अभी भी वर्तमान डिजिटल दृश्य में विशिष्ट वर्गीकृत विज्ञापनों तक पहुँचने के लिए एक महत्वपूर्ण मंच है। एडीएस से विवरण निष्कर्षण को सुव्यवस्थित करने में पायथन का उपयोग करना बहुत मददगार साबित होता है। उत्पादक वेब स्क्रैपिंग संचालन पायथन में अनुकूलन क्षमता और मजबूत पुस्तकालयों द्वारा सक्षम हैं जैसे कि अनुरोध या सुंदरता। यह गाइड पायथन के साथ क्रेग्सलिस्ट स्क्रैपिंग के दायरे में देरी करता है, सुंदरता के उपयोग को उजागर करता है और सामग्री निष्कर्षण के लिए अनुरोध करता है, प्रॉक्सी रोटेशन के साथ-साथ एंटी-बॉट डिफेंस को प्रभावी ढंग से नेविगेट करने के लिए।
इसके बाद, हम स्क्रैपिंग प्रक्रिया के माध्यम से कदम दर कदम, HTTP अनुरोध भेजने और विशिष्ट पृष्ठ तत्वों को निकालने के साथ शुरू करेंगे, और आवश्यक प्रारूप में डेटा को सहेजने के साथ परिष्कृत करेंगे।
आपको आवश्यक पुस्तकालयों को स्थापित करने की आवश्यकता होगी:
pip install beautifulsoup4
pip install requests
HTTP GET अनुरोधों को Craigslist लिस्टिंग पेजों को भेजने के लिए अनुरोध लाइब्रेरी का उपयोग करें।
import requests
# क्रेग्सलिस्ट URL की सूची को खुरचने के लिए
urls = [
"link",
"link"
]
for url in urls:
# URL को एक अनुरोध प्राप्त करें
response = requests.get(url)
# जाँच करें कि क्या अनुरोध सफल था (स्थिति कोड 200)
if response.status_code == 200:
# प्रतिक्रिया से HTML सामग्री निकालें
html_content = response.text
else:
# यदि अनुरोध विफल हो गया, तो स्थिति कोड के साथ एक त्रुटि संदेश प्रिंट करें
print(f"Failed to retrieve {url}. Status code: {response.status_code}")
HTML पार्सिंग के लिए BeautifulSoup का उपयोग करें और पुनर्प्राप्त सामग्री के माध्यम से नेविगेटिंग करें।
from bs4 import BeautifulSoup
# सूची में प्रत्येक URL के माध्यम से पुनरावृत्ति करें
for url in urls:
# URL को एक अनुरोध प्राप्त करें
response = requests.get(url)
#जाँच करें कि क्या अनुरोध सफल था (स्थिति कोड 200)
if response.status_code == 200:
# प्रतिक्रिया से HTML सामग्री निकालें
html_content = response.text
#BeautifulSoup का उपयोग करके HTML सामग्री को पार्स करें
soup = BeautifulSoup(html_content, 'html.parser')
else:
#यदि अनुरोध विफल हो गया, तो स्थिति कोड के साथ एक त्रुटि संदेश प्रिंट करें
print(f"Failed to retrieve {url}. Status code: {response.status_code}")
BeautifulSoup विधियों का उपयोग करके क्रेग्सलिस्ट लिस्टिंग से आइटम टाइटल और कीमतों जैसे डेटा को निकालें।
from bs4 import BeautifulSoup
# सूची में प्रत्येक URL के माध्यम से पुनरावृत्ति करें
for url in urls:
# Send a GET request to the URL
response = requests.get(url)
# जाँच करें कि क्या अनुरोध सफल था (स्थिति कोड 200)
if response.status_code == 200:
# प्रतिक्रिया से HTML सामग्री निकालें
html_content = response.text
# BeautifulSoup का उपयोग करके HTML सामग्री को पार्स करें
soup = BeautifulSoup(html_content, 'html.parser')
# विशिष्ट डेटा बिंदु निकालना
# लिस्टिंग का शीर्षक खोजें
title = soup.find('span', id='titletextonly').text.strip()
# लिस्टिंग की कीमत खोजें
price = soup.find('span', class_='price').text.strip()
# लिस्टिंग का विवरण खोजें (कई पैराग्राफ हो सकते हैं)
description = soup.find('section', id='postingbody').find_all(text=True, recursive=False)
# निकाले गए डेटा (प्रदर्शन के उद्देश्यों के लिए)
print(f"Title: {title}")
print(f"Price: {price}")
print(f"Description: {description}")
else:
# यदि अनुरोध विफल हो जाता है, तो स्थिति कोड के साथ एक त्रुटि संदेश प्रिंट करें
print(f"Failed to retrieve {url}. Status code: {response.status_code}")
शीर्षक:
कीमत:
विवरण:
एक बार डेटा निकालने के बाद, इसे अन्य उपकरणों के साथ आगे के विश्लेषण या एकीकरण के लिए एक CSV फ़ाइल में सहेजें।
import csv
# CSV फ़ाइल पथ और फ़ील्ड नामों को परिभाषित करें
csv_file = 'craigslist_data.csv'
fieldnames = ['Title', 'Price', 'Description']
# CSV फ़ाइल में डेटा लिखना
try:
# UTF-8 एन्कोडिंग के साथ राइट मोड में CSV फ़ाइल खोलें
with open(csv_file, mode='w', newline='', encoding='utf-8') as file:
# निर्दिष्ट फ़ील्डनाम के साथ एक CSV DictWriter ऑब्जेक्ट बनाएं
writer = csv.DictWriter(file, fieldnames=fieldnames)
# CSV फ़ाइल में हेडर पंक्ति लिखें
writer.writeheader()
# Scraped_data सूची में प्रत्येक आइटम के माध्यम से पुनरावृत्त करें
for item in scraped_data:
# प्रत्येक आइटम को CSV फ़ाइल में एक पंक्ति के रूप में लिखें
writer.writerow(item)
# CSV फ़ाइल में डेटा लिखने के बाद एक सफलता संदेश प्रिंट करें
print(f"Data saved to {csv_file}")
except IOError:
# एक त्रुटि संदेश प्रिंट करें यदि CSV फ़ाइल को लिखते समय IoError होता है
print(f"Error occurred while writing data to {csv_file}")
क्रेग्सलिस्ट स्क्रैपिंग को रोकने के लिए उपायों को लागू कर सकता है, जैसे कि आईपी ब्लॉकिंग या कैप्चा चुनौतियां। इन मुद्दों को कम करने के लिए, प्रॉक्सी का उपयोग करने और उपयोगकर्ता एजेंटों को घुमाने पर विचार करें।
प्रॉक्सी का उपयोग करना:
यह उदाहरण आईपी पते प्राधिकरण के साथ एक प्रॉक्सी के उपयोग को प्रदर्शित करता है।
proxies = {
'http': 'http://your_proxy_ip:your_proxy_port',
'https': 'https://your_proxy_ip:your_proxy_port'
}
response = requests.get(url, proxies=proxies)
उपयोगकर्ता-एजेंट रोटेशन:
import random
user_agents = [
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
# आवश्यकतानुसार अधिक उपयोगकर्ता एजेंट जोड़ें
]
headers = {
'User-Agent': random.choice(user_agents)
}
response = requests.get(url, headers=headers)
यह पूर्ण पायथन स्क्रिप्ट दिखाती है कि विभिन्न घटकों को एक कुशल क्रेगलिस्ट स्क्रैपर बनाने के लिए कैसे एकीकृत किया जाए, जो कई URL से डेटा को अर्क, पार्स और पुनर्प्राप्त करता है।
import requests
import urllib3
from bs4 import BeautifulSoup
import csv
import random
import ssl
ssl._create_default_https_context = ssl._create_stdlib_context
urllib3.disable_warnings()
# क्रेग्सलिस्ट URL की सूची को खुरचने के लिए
urls = [
"link",
"link"
]
# उपयोगकर्ता एजेंट और परदे के पीछे
user_agents = [
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
]
proxies = [
{'http': 'http://your_proxy_ip1:your_proxy_port1', 'https': 'https://your_proxy_ip1:your_proxy_port1'},
{'http': 'http://your_proxy_ip2:your_proxy_port2', 'https': 'https://your_proxy_ip2:your_proxy_port2'},
]
# स्क्रैप किए गए डेटा को स्टोर करने के लिए सूची
scraped_data = []
# सूची में प्रत्येक URL के माध्यम से लूप
for url in urls:
# पता लगाने से बचने के लिए प्रत्येक अनुरोध के लिए उपयोगकर्ता एजेंट को घुमाएं
headers = {
'User-Agent': random.choice(user_agents)
}
# आईपी ब्लॉकिंग से बचने के लिए प्रत्येक अनुरोध के लिए एक अलग प्रॉक्सी का उपयोग करें
proxy = random.choice(proxies)
try:
# हेडर और प्रॉक्सी के साथ क्रेग्सलिस्ट URL को अनुरोध भेजें
response = requests.get(url, headers=headers, proxies=proxy, timeout=30, verify=False)
# जाँच करें कि क्या अनुरोध सफल था (स्थिति कोड 200)
if response.status_code == 200:
# प्रतिक्रिया के HTML सामग्री को पार्स करें
html_content = response.text
soup = BeautifulSoup(html_content, 'html.parser')
# पार्सड HTML से डेटा निकालें
title = soup.find('span', id='titletextonly').text.strip()
price = soup.find('span', class_='price').text.strip()
description = soup.find('section', id='postingbody').get_text(strip=True, separator='\n') # निकालने का विवरण
# सूची में एक शब्दकोश के रूप में डेटा स्क्रैप्ड डेटा
scraped_data.append({'Title': title, 'Price': price, 'Description': description})
print(f"Data scraped for {url}")
else:
# यदि अनुरोध विफल हो जाता है तो त्रुटि संदेश प्रिंट करें
print(f"Failed to retrieve {url}. Status code: {response.status_code}")
except Exception as e:
# यदि कोई त्रुटि स्क्रैपिंग के दौरान होती है, तो अपवाद संदेश प्रिंट करें
print(f"Exception occurred while scraping {url}: {str(e)}")
# स्क्रैप किए गए डेटा को संग्रहीत करने के लिए CSV फ़ाइल सेटअप
csv_file = 'craigslist_data.csv'
fieldnames = ['Title', 'Price', 'Description']
# CSV फ़ाइल में स्क्रैपेड डेटा लिखना
try:
with open(csv_file, mode='w', newline='', encoding='utf-8') as file:
writer = csv.DictWriter(file, fieldnames=fieldnames)
# CSV फ़ाइल में हेडर पंक्ति लिखें
writer.writeheader()
# Scraped_data सूची के माध्यम से iterate और प्रत्येक आइटम को CSV फ़ाइल में लिखें
for item in scraped_data:
writer.writerow(item)
# यदि डेटा सफलतापूर्वक सहेजा जाता है तो सफलता संदेश प्रिंट करें
print(f"Data saved to {csv_file}")
except IOError:
# CSV फ़ाइल में लिखते समय IOERROR है तो त्रुटि संदेश प्रिंट करें
print(f"Error occurred while writing data to {csv_file}")
क्रेग्सलिस्ट महत्वपूर्ण है क्योंकि यह एक ऐसी जगह प्रदान करता है जहां हम वर्गीकृत विज्ञापन पा सकते हैं जो हमें बाजारों की जांच के लिए उपयोगी जानकारी देते हैं, दूसरों के बीच लीड खोजते हैं। क्रेगलिस्ट वेब स्क्रैपिंग को पायथन द्वारा BeaughtSoup और अनुरोध जैसे पुस्तकालयों का उपयोग करके आसान बनाया गया है। इस ट्यूटोरियल में चर्चा की गई प्रमुख रणनीति गतिशील सामग्री को संभाल रही है और प्रॉक्सी को घूर्णन कर रही है। पायथन का जिम्मेदारी से लाभ उठाकर, आप विभिन्न डोमेन में सूचित निर्णय लेने का समर्थन करते हुए, क्रेग्सलिस्ट लिस्टिंग से कार्रवाई योग्य अंतर्दृष्टि निकाल सकते हैं।
टिप्पणियाँ: 0