कैसे अजगर का उपयोग करके मध्यम लेखों को परिमार्जन करें

टिप्पणियाँ: 0

मध्यम से लेख निकालने से सामग्री मूल्यांकन, डेटा एकत्र करने, या लेखकों और उनके कार्यों की निगरानी जैसे उद्देश्यों के लिए अत्यधिक महत्व हो सकता है। इस ट्यूटोरियल में, हम सीखेंगे कि कैसे मध्यम को स्क्रैप करें - लेखकों के लिए एक लेख वेबसाइट, पायथन प्रोग्रामिंग भाषा का उपयोग करके। हम चर्चा करेंगे कि कैसे डेटा जैसे लेख का शीर्षक, लेखक का नाम, प्रकाशन का नाम, और पाठ निकाय को एक मध्यम लेख के दिए गए वेब URL से निकाला जा सकता है।

आवश्यकताएँ

इस ट्यूटोरियल के लिए, हम इस लेख को मध्यम पर स्क्रैप कर रहे हैं: "9 पायथन बिल्ट-इन डेकोरेटर जो आपके कोड को काफी अनुकूलित करते हैं"।

शुरू करने से पहले, निम्नलिखित पुस्तकालयों को स्थापित करें:

  • Requests: मध्यम को HTTP अनुरोध भेजने के लिए।
  • lxml: HTML सामग्री को पार्स करने के लिए।
  • Pandas: डेटा को CSV फ़ाइल में सहेजने के लिए।

उन्हें निम्न आदेशों के साथ स्थापित करें:


pip install requests
pip install lxml 
pip install pandas

हेडर और प्रॉक्सी के महत्व को समझना

मध्यम अनधिकृत स्क्रैपिंग को रोकने के लिए बॉट डिटेक्शन तकनीकों का उपयोग करता है। बॉट डिटेक्शन से बचने और जिम्मेदार स्क्रैपिंग के लिए उचित हेडर और प्रॉक्सी महत्वपूर्ण हैं।

हेडर : ये एक अनुरोध का अनुकरण करते हैं जैसे कि यह एक वास्तविक ब्राउज़र से आ रहा है। इनमें ब्राउज़र प्रकार, स्वीकृत सामग्री प्रकार और कैशिंग व्यवहार जैसी जानकारी शामिल है।


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': '"Google Chrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"',
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-platform': '"Linux"',
    '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/129.0.0.0 Safari/537.36',
}

प्रॉक्सी : प्रॉक्सी आपके आईपी पते को मास्क कर सकता है, इसे समय -समय पर घुमा सकता है ताकि मध्यम द्वारा अवरुद्ध होने के अनुरोधों के लिए इसे कम होने की संभावना कम हो सके। यहाँ आईपी पते प्रमाणीकरण के साथ इसका उपयोग करने का एक उदाहरण है:


proxies = {
    'http': 'IP:PORT',
    'https': 'IP:PORT'
}

response = requests.get(
 'https://medium.com/techtofreedom/9-python-built-in-decorators-that-optimize-your-code-significantly-bc3f661e9017',
    headers=headers,
    proxies=proxies
)

मध्यम को अनुरोध भेजना

यहां बताया गया है कि हेडर कैसे सेट करें और लेख URL को अनुरोध भेजें:


import requests

# एक वास्तविक ब्राउज़र अनुरोध का अनुकरण करने के लिए हेडर
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': '"Google Chrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"',
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-platform': '"Linux"',
    '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/129.0.0.0 Safari/537.36',
}

url = 'https://medium.com/techtofreedom/9-python-built-in-decorators-that-optimize-your-code-significantly-bc3f661e9017'
response = requests.get(url, headers=headers)

डेटा निकालना

एक बार जब हमारे पास पृष्ठ सामग्री होती है, तो हम इसे पार्स कर सकते हैं और प्रासंगिक जानकारी निकाल सकते हैं।

HTML सामग्री को पार्सिंग करें

हम HTML प्रतिक्रिया को पार्स करने और विशिष्ट तत्वों को निकालने के लिए LXML का उपयोग करेंगे। यहाँ यह कैसे करना है:


from lxml.html import fromstring

parser = fromstring(response.text)

# डेटा निकालें
title = parser.xpath('//h1[@data-testid="storyTitle"]/text()')[0]
author = parser.xpath('//a[@data-testid="authorName"]/text()')[0]
publication_name = parser.xpath('//a[@data-testid="publicationName"]/p/text()')[0]
publication_date = parser.xpath('//span[@data-testid="storyPublishDate"]/text()')[0]
content = '\n '.join(parser.xpath('//div[@class="ci bh ga gb gc gd"]/p/text()'))
auth_followers = parser.xpath('//span[@class="pw-follower-count bf b bg z bk"]/a/text()')[0]
sub_title = parser.xpath('//h2[@id="1de6"]/text()')[0]

अब, हम सभी निकाले गए डेटा को रखने के लिए एक शब्दकोश बनाएंगे। इससे CSV फ़ाइल को सहेजना आसान हो जाता है।


# एक शब्दकोश में डेटा सहेजें
article_data = {
    'Title': title,
    'Author': author,
    'Publication': publication_name,
    'Date': publication_date,
    'Followers': auth_followers,
    'Subtitle': sub_title,
    'Content': content,
}

print(article_data)

एक CSV फ़ाइल में डेटा सहेजना

अंत में, आगे के विश्लेषण या रिकॉर्ड-कीपिंग के लिए डेटा को CSV फ़ाइल में सहेजें।


import pandas as pd

# डिक्शनरी को DataFrame में बदलें और CSV के रूप में सहेजें
df = pd.DataFrame([article_data])
df.to_csv('medium_article_data.csv', index=False)
print("Data saved to medium_article_data.csv")

पूर्ण कोड

यहां मध्यम लेख डेटा को स्क्रैप करने के लिए पूरा कोड है:


import requests
from lxml.html import fromstring
import pandas as pd

# एक ब्राउज़र की नकल करने के लिए हेडर
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': '"Google Chrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"',
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-platform': '"Linux"',
    '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/129.0.0.0 Safari/537.36',
}


proxies = {
    'http': 'IP:PORT',
    'https': 'IP:PORT'
}

# पृष्ठ का अनुरोध करना
url = 'https://medium.com/techtofreedom/9-python-built-in-decorators-that-optimize-your-code-significantly-bc3f661e9017'
response = requests.get(url, headers=headers, proxies=proxies)

# पृष्ठ को पार्स करना
parser = fromstring(response.text)

# डेटा निकालें
title = parser.xpath('//h1[@data-testid="storyTitle"]/text()')[0]
author = parser.xpath('//a[@data-testid="authorName"]/text()')[0]
publication_name = parser.xpath('//a[@data-testid="publicationName"]/p/text()')[0]
publication_date = parser.xpath('//span[@data-testid="storyPublishDate"]/text()')[0]
content = '\n '.join(parser.xpath('//div[@class="ci bh ga gb gc gd"]/p/text()'))
auth_followers = parser.xpath('//span[@class="pw-follower-count bf b bg z bk"]/a/text()')[0]
sub_title = parser.xpath('//h2[@id="1de6"]/text()')[0]

# सहेजना डेटा
article_data = {
    'Title': title,
    'Author': author,
    'Publication': publication_name,
    'Date': publication_date,
    'Followers': auth_followers,
    'Subtitle': sub_title,
    'Content': content,
}

# CSV को सहेजें
df = pd.DataFrame([article_data])
df.to_csv('medium_article_data.csv', index=False)
print("Data saved to medium_article_data.csv")

मध्यम से स्क्रैपिंग सामग्री को जिम्मेदारी से संचालित किया जाना चाहिए। सर्वर पर अत्यधिक अनुरोध लोड सेवा के प्रदर्शन को प्रभावित कर सकता है, और बिना अनुमति के डेटा को स्क्रैप करने से वेबसाइट के उपयोग की शर्तों का उल्लंघन हो सकता है। किसी भी वेबसाइट को स्क्रैप करने से पहले हमेशा रोबोट .TXT फ़ाइल और शर्तों की जाँच करें।

टिप्पणियाँ:

0 टिप्पणियाँ