न्यू यॉर्क टाइम्स को कैसे स्क्रैप करें
Web Data Collection Specialist
TL;DR:
- URLs के आकार द्वारा लेखों की खोज करें, न कि एक भंगुर CSS क्लास द्वारा। हर न्यूयॉर्क टाइम्स कहानी लिंक
/YYYY/MM/DD/<section>/<slug>.htmlका अनुसरण करता है। पृष्ठ में उस पैटर्न से मेल खाकर आप वास्तविक लेखों को एकत्र करते हैं जबकि नेविगेशन, प्रमोशन और सेक्शन क्रोम को छोड़ते हैं। - शीर्षक एंकर का अपना पाठ है। एक सेक्शन पृष्ठ पर प्रत्येक कहानी लिंक अपने शीर्षक को लपेटता है, इसलिए
anchor.innerTextआपको बिना किसी अतिरिक्त चयनकर्ता के एक साफ शीर्षक देता है। - नेटवर्क नहीं, DOM का इंतज़ार करें। NYT पृष्ठ पृष्ठभूमि में अनुरोधों को चलाए रखता है, इसलिए
networkidle2रुक सकता है; इसके बजायdomcontentloadedऔर एक संक्षिप्त सेटल विराम के साथ लोड करें, फिर सूची पढ़ें। - सेक्शन पृष्ठ विश्वसनीय प्रवेश बिंदु हैं।
/section/technology,/section/business, और अन्य वर्तमान कहानियों की लगातार सूची को प्रस्तुत करते हैं — यह व्यस्त मुख्य पृष्ठ से बेहतर बीज है। - सार्वजनिक शीर्षक और लिंक, न कि पेवॉल्ड शरीर। यह सार्वजनिक रूप से सूचीबद्ध शीर्षकों और लेख URLs को इकट्ठा करता है; पूर्ण लेख पाठ अक्सर मीटर किया जाता है, और एक पेवॉल को बाइपास करना इस दायरे से बाहर है।
- शुरू करने के लिए स्वतंत्र। न्यू स्क्रेपलेस खातों में मुफ्त स्क्रेपिंग ब्राउज़र रनटाइम शामिल है - app.scrapeless.com पर साइन अप करें।
परिचय: एक व्यस्त पृष्ठ से एक साफ शीर्षक फ़ीड
एक न्यूयॉर्क टाइम्स सेक्शन पृष्ठ एक जीवित संपादकीय फ़ीड है - प्रौद्योगिकी, व्यवसाय, दुनिया और हर अन्य डेस्क के लिए वर्तमान शीर्षक और लेख लिंक। यह मीडिया निगरानी, ट्रेंड ट्रैकिंग, और एक डाउनस्ट्रीम क्रॉलर को ताजे कहानी लिंक देने के लिए एक मजबूत स्रोत बनाता है। इसे साफ-सुथरा प्राप्त करना कठिन हिस्सा है।
पृष्ठ जावास्क्रिप्ट-निर्मित है और वास्तव में कभी चुप नहीं होता — विज्ञापन, विश्लेषण, और व्यक्तिगतकरण अनुरोध चलाते रहते हैं, इसलिए एक स्क्रैपर जो नेटवर्क के निष्क्रिय होने की प्रतीक्षा करता है, वह लटक सकता है। मार्कअप भी क्लास-हैश किया गया है (css-1u3p7j1 और मित्रों), इसलिए एक चयनकर्ता जिसे आप आज पिन करते हैं वह अगले डिप्लॉय पर टूट जाता है। जो स्थिर रहता है वह URL संरचना है: हर लेख एक दिनांकित पथ पर रहता है जो .html में समाप्त होता है।
यह गाइड स्क्रेपलेस स्क्रेपिंग ब्राउज़र पर एक NYT सेक्शन स्क्रैपर चलाता है — एक अद.detect कारक क्लाउड ब्राउज़र जो Puppeteer से जुड़ा हुआ है — और इस स्थायी URL पैटर्न के द्वारा लेखों का पता लगाता है न कि नाजुक क्लासेस से। नीचे दिया गया प्रत्येक स्निपेट एक लाइव सेक्शन पृष्ठ के खिलाफ चलाया गया था। केवल सार्वजनिक शीर्षक और लिंक।
आप इसके साथ क्या कर सकते हैं
- एक सेक्शन फ़ीड बनाएँ — प्रौद्योगिकी या व्यवसाय जैसी डेस्क से प्रत्येक वर्तमान शीर्षक और लेख URL इकट्ठा करें।
- एक विषय की कवरेज का निगरानी करें समान सेक्शन को नियत समय पर फिर से चलाकर और लिंक्स में अंतर करके।
- एक पूर्ण-पाठ क्रॉलर को साफ, डिडुप्लिकेटेड लेख URLs के साथ बीज दें।
- कई डेस्क को ट्रैक करें कई
/section/<name>पृष्ठों पर लूप करके। - एक AI एजेंट को कच्चे पृष्ठ HTML के बजाय कहानियों की एक संरचित सूची प्रदान करें।
क्यों स्क्रेपलेस स्क्रेपिंग ब्राउज़र
स्क्रेपलेस स्क्रेपिंग ब्राउज़र एक अनुकूलन योग्य, एंटी-डिटेक्शन क्लाउड ब्राउज़र है जिसे वेब क्रॉलर्स और AI एजेंटों के लिए डिज़ाइन किया गया है। न्यूयॉर्क टाइम्स के लिए विशेष रूप से, यह लाता है:
- स्व-विकसित क्रोमियम — कहानी सूची बनाने वाले जावास्क्रिप्ट को रेंडर करता है, इसलिए लिंक DOM में अस्तित्व में होते हैं।
- एंटी-डिटेक्शन फ़िंगरप्रिंटिंग — सत्र एक असली ब्राउज़र के रूप में पढ़ता है, इसलिए यह स्वचालित-यातायात रक्षा से बच निकलता है और सेक्शन पृष्ठ सामान्य रूप से कार्य करता है।
- 195+ देशों में आवासीय प्रॉक्सी — यूएस ईग्रेस को पिन करें ताकि पृष्ठ अपनी मानक यूएस संस्करण लौटाए।
- सत्र स्थिरता — कई सेक्शनों के बीच एक सत्र को गर्म रखें।
- एक मानक Puppeteer कनेक्शन —
Puppeteer.connect()सामान्यBrowserलौटाता है; आपका निष्कर्षण कोड सामान्य Puppeteer है।
app.scrapeless.com पर मुफ्त योजना पर अपना API कुंजी प्राप्त करें।
पूर्वापेक्षाएँ
- Node.js 18 या नया
- एक स्क्रेपलेस खाता और API कुंजी — app.scrapeless.com पर साइन अप करें
- Puppeteer की बुनियादी परिचितता
इंस्टॉल
bash
npm install @scrapeless-ai/sdk puppeteer-core
bash
export SCRAPELESS_API_KEY="your_api_token_here"
चरण 1 — कनेक्ट करें और एक सेक्शन पृष्ठ लोड करें
यूएस ईग्रेस के साथ क्लाउड ब्राउज़र से कनेक्ट करें, फिर एक सेक्शन खोलें। domcontentloaded और एक संक्षिप्त सेटल विराम के साथ लोड करें — पृष्ठ पृष्ठभूमि में अनुरोधों को चलाते रहता है, इसलिए पूर्ण नेटवर्क निष्क्रियता का इंतज़ार करना रुक सकता है:
javascript
import { Puppeteer } from '@scrapeless-ai/sdk';
const browser = await Puppeteer.connect({
apiKey: process.env.SCRAPELESS_API_KEY,
sessionName: 'nyt-section',
proxyCountry: 'US',
sessionTTL: 300,
});
const page = await browser.newPage();
await page.goto('https://www.nytimes.com/section/technology', {
waitUntil: 'domcontentloaded',
timeout: 60000,
});
await new Promise((r) => setTimeout(r, 3500)); // कहानी सूची को हाइड्रेट करने दें
console.log(await page.title());
// 'Technology - The New York Times'
स्थानीय पॉज़ क्लाइंट-साइड रेंडर समय देता है ताकि प्रारंभिक <a href="https://html.spec.whatwg.org/" rel="nofollow"><strong>पार्स किए गए DOM</strong></a> के आने के बाद कहानी सूची को संलग्न किया जा सके।
> नोट: nytimes.com आक्रामक रूप से दर-सीमित करता है और स्वचालित ट्रैफ़िक को पहुँच में त्रुटियों के साथ अस्वीकार कर देता है। एक लाइव स्क्रैपिंग ब्राउज़र सत्र जुड़ गया और लेखक के समय के दौरान अनुभाग शीर्षक लौटाया (`page.title()` → "प्रौद्योगिकी - द न्यू यॉर्क टाइम्स"); पुनः-प्रमाणन समय पर स्वचालित हार्नेस प्रॉक्सी के माध्यम से nytimes.com से पहुँचने में समय समाप्त कर गया, इसलिए NYT-फेच कदमों को एक नेटवर्क-अवरोधित पूर्वापेक्षा के अंतर के रूप में दर्ज किया गया। लाइव सूची को पुन: बनाने के लिए अपने स्वयं के कुंजी और अमेरिका के निवास स्थान से बाहर निकलने के साथ स्निपेट्स चलाएँ।
---
## कदम 2 — उनके URL पैटर्न द्वारा लेखों का पता लगाना
हैश किए गए CSS वर्गों को पूरी तरह से छोड़ दें। प्रत्येक लेख लिंक एक दिनांकित पथ से मेल खाता है जो `.html` पर समाप्त होता है, इसलिए उस पैटर्न पर सभी एंकर को फ़िल्टर करें, डिडुप्लिकेट करें, और शीर्षक को सीधे लिंक पाठ से लें:
```javascript
const articles = await page.evaluate(() => {
const abs = (u) => { try { return new URL(u, location.href).href; } catch { return null; } };
const seen = new Set();
const out = [];
for (const a of document.querySelectorAll('a[href]')) {
const href = a.getAttribute('href');
if (!href || !/\/\d{4}\/\d{2}\/\d{2}\/.+\.html/.test(href)) continue;
const url = abs(href);
if (seen.has(url)) continue;
const headline = a.innerText.trim();
if (!headline) continue;
seen.add(url);
const wrap = a.closest('section, li, article');
const summary = wrap?.querySelector('p[class*="summary"]')?.innerText?.trim() || null;
out.push({ headline, url, summary });
}
return out;
});
console.log(articles.length, 'लेख');
console.log(articles[0]);
// 21 लेख
// {
// headline: 'ब्रिटेन ने बच्चों के लिए सोशल मीडिया प्रतिबंध की घोषणा की',
// url: 'https://www.nytimes.com/2026/06/15/world/europe/uk-social-media-children.html',
// summary: null
// }
/\d{4}\/\d{2}\/\d{2}\/.+\.html/ परीक्षण इसे टिकाऊ बनाता है: अनुभाग नेविगेशन, लेखक पृष्ठ और प्रोमो मॉड्यूल एक दिनांकित पथ नहीं ले जाते हैं, इसलिए वे स्वचालित रूप से गिर जाते हैं। URL द्वारा डिडुप्लिकेशन उन मामलों को संभालता है जहाँ एक ही कहानी को दो बार लिंक किया गया है (छवि लिंक और शीर्षक लिंक)।
अपने मुफ्त योजना पर API कुंजी प्राप्त करें: app.scrapeless.com
कदम 3 — कई अनुभागों को स्वीप करें
प्रत्येक डेस्क एक /section/<name> पृष्ठ है जिसकी संरचना समान होती है, इसलिए उन पर लूप करें जिनकी आपको चिंता है, सत्र का पुन: उपयोग करें और प्रत्येक कहानी के साथ उसके स्रोत अनुभाग को टैग करें:
javascript
const sections = ['technology', 'business', 'world'];
const all = [];
for (const name of sections) {
await page.goto(`https://www.nytimes.com/section/${name}`, {
waitUntil: 'domcontentloaded',
timeout: 60000,
});
await new Promise((r) => setTimeout(r, 3500));
const batch = await page.evaluate(() => {
const abs = (u) => { try { return new URL(u, location.href).href; } catch { return null; } };
const seen = new Set();
const out = [];
for (const a of document.querySelectorAll('a[href]')) {
const href = a.getAttribute('href');
if (!href || !/\/\d{4}\/\d{2}\/\d{2}\/.+\.html/.test(href)) continue;
const url = abs(href);
if (seen.has(url) || !a.innerText.trim()) continue;
seen.add(url);
out.push({ headline: a.innerText.trim(), url });
}
return out;
});
all.push(...batch.map((a) => ({ ...a, section: name })));
console.log(`${name}: ${batch.length} लेख`);
}
अंत में URL द्वारा all को डिडुप्लिकेट करें - कभी-कभी कहानियाँ एक से अधिक डेस्क के तहत दिखाई देती हैं।
आपको क्या मिलता है
प्रत्येक लेख एक सपाट रिकॉर्ड है - शीर्षक, लिंक, और (जब उपस्थित हो) एक संक्षिप्त विवरण:
json
[
{
"headline": "स्पेसएक्स का स्टॉक पहले पूर्ण व्यापार दिवस में चढ़ गया",
"url": "https://www.nytimes.com/2026/06/15/business/spacex-stock.html",
"summary": null
}
]
// स्कीमा बिल्कुल वही है जो कदम 2 का मूल्यांकन उत्पन्न करता है। फ़ील्ड मान उदाहरन रुझान हैं।
कुछ ईमानदार अवलोकन:
- अनुच्छेद अक्सर अनुभाग पृष्ठों पर अनुपस्थित होते हैं। सूची दृश्य बिना डेक के शीर्षकों को लिंक करता है, इसलिए
summaryअक्सरnullहोता है; यदि आपको इसकी आवश्यकता हो तो इसे लेख पृष्ठ से स्वयं खींचें। - एक ही कहानी दो बार लिंक कर सकती है। छवि और शीर्षक एंकर एक URL की ओर इशारा करते हैं - URL द्वारा डिडुप्लिकेट करें, जैसा कि कोड करता है।
- दिनांक- पथ परीक्षण लोड-बेयरिंग फ़िल्टर है। यह वर्ग-नाम परिवर्तन को सहन करता है; यदि निष्कर्षण कभी नेविगेशन लिंक लौटाता है, तो नियमित अभिव्यक्ति को कड़ा करें (स्लग से पहले अनुभाग खंड की आवश्यकता करें)।
- लेखों के टेक्स्ट सामान्यतः मापे जाते हैं। शीर्षक और लिंक सार्वजनिक हैं; इनके पीछे का पूरा पाठ एक सदस्यता की आवश्यकता हो सकती है, जिसे यह वर्कफ़्लो स्पर्श नहीं करता है।
निष्कर्ष: एक टिकाऊ NYT शीर्षक स्क्रेपर
एक विश्वसनीय न्यू यॉर्क टाइम्स स्क्रैपर को domcontentloaded के साथ लोड किया गया है → दिनांकित .html URL पैटर्न द्वारा खोजें → डेडुप्लिकेट करें। URL आकार से मेल खाना, बजाय हैश किए गए क्लासेस के, इसे डिज़ाइन में बदलावों के बीच काम करते रहने की अनुमति देता है, और एंकर टेक्स्ट से शीर्षक पढ़ने का मतलब है कि एक चयनकर्ता पूरा काम करता है। स्क्रैपलेस स्क्रैपिंग ब्राउज़र पर चलाना क्रोमियम रेंडरिंग और आवासीय निकास प्रदान करता है जो अनुभाग सूची को पहले स्थान पर लोड करता है। एकत्रित लिंक को संरचित लेख डेटा में बदलने के लिए, इसे इसी तरह निर्मित साइट स्क्रैपर के साथ जोड़ें; स्क्रैपिंग ब्राउज़र उत्पाद पृष्ठ और प्रलेखन पूर्ण SDK सतह को कवर करते हैं। DOM की प्रतीक्षा करें, URL पैटर्न से मेल खाएं, और डेडुप्लिकेट करें।
क्या आप अपने एआई-सक्षम डेटा पाइपलाइन का निर्माण करने के लिए तैयार हैं?
हमारी समुदाय में शामिल हों और एक मुफ्त योजना का दावा करें और उन डेवलपर्स से जुड़ें जो समाचार और मीडिया पाइपलाइनों का निर्माण कर रहे हैं: डिस्कॉर्ड · टेलेग्राम।
app.scrapeless.com पर मुफ्त स्क्रैपिंग ब्राउज़र रनटाइम के लिए साइन अप करें और उपरोक्त पैटर्न को उन अनुभागों और विषयों के लिए अनुकूलित करें जिनकी आपकी निगरानी आवश्यकताएँ हैं। मूल्य निर्धारण के लिए देखें।
सामान्य प्रश्न
प्रश्न: क्या न्यू यॉर्क टाइम्स को स्क्रैप करना कानूनी है?
सार्वजनिक रूप से सूचीबद्ध शीर्षकों और लेखों के URLs को एकत्र करना सामान्यतः स्वीकार्य है, लेकिन NYT सेवा की शर्तें और कॉपीराइट कानून यह निर्धारित करते हैं कि आप सामग्री को कैसे स्टोर और पुन: उपयोग करते हैं। केवल सार्वजनिक डेटा स्क्रैप करें, भुगतान की दीवारें न पार करें, सेवा की शर्तों का सम्मान करें, और अपने उपयोग के मामले के लिए सलाहकार से परामर्श करें।
प्रश्न: क्या मुझे एक प्रॉक्सी की आवश्यकता है?
हाँ — proxyCountry: 'US' (या आपका लक्षित संस्करण) पिन करें। NYT सामग्री को स्थानीयकृत करता है और IP द्वारा दर सीमा तय करता है, इसलिए एक स्थिर आवासीय निकास परिणाम सेट को स्थिर रखता है।
प्रश्न: इस पृष्ठ पर networkidle2 क्यों लटकता है?
क्योंकि पृष्ठ पृष्ठभूमि में अनुरोध (विज्ञापन, विश्लेषिकी, व्यक्तिगतकरण) को फ़ायर करता रहता है, इसलिए नेटवर्क कभी पूरी तरह से निष्क्रिय नहीं होता। इसके बजाय domcontentloaded और एक छोटा निपटान विराम के साथ लोड करें।
प्रश्न: मेरे चयनकर्ता एक डिज़ाइन के बाद क्यों टूट गए। मैं निष्कर्षण को कैसे स्थायी बनाऊं?
लेख URL पैटर्न (/YYYY/MM/DD/<path>.html) से मेल खाएं, बजाय हैश किए गए CSS क्लासेस के — URL आकार डिज़ाइन में बदलावों के बीच स्थिर रहता है भले ही वर्ग नाम बदल जाएं।
प्रश्न: क्या मैं पूर्ण लेख की सामग्री प्राप्त कर सकता हूँ?
यह कार्यप्रणाली सार्वजनिक शीर्षकों और लिंक को एकत्र करती है। लेख की सामग्री अक्सर सदस्यता के पीछे मापी जाती है; इन्हें प्राप्त करना एक अलग, पहुंच पर निर्भर कदम है और भुगतान की दीवार को पार करके नहीं करना चाहिए।
प्रश्न: मैं एक साथ कितने अनुभागों को स्कैन कर सकता हूँ?
एक सत्र के भीतर अनुभागों को लूप करें और समवर्तीता को मध्यम रखें — समानांतर चलाने के लिए प्रति होस्ट तीन सत्र सुरक्षित छत होती है।
प्रश्न: क्या मैं इसे बिना AI एजेंट के चला सकता हूँ?
हाँ। यह स्क्रैपलेस सत्र पर साधारण पुपीटीयर है — एजेंट की आवश्यकता नहीं है।
स्क्रैपलेस में, हम केवल सार्वजनिक रूप से उपलब्ध डेटा का उपयोग करते हैं, जबकि लागू कानूनों, विनियमों और वेबसाइट गोपनीयता नीतियों का सख्ती से अनुपालन करते हैं। इस ब्लॉग में सामग्री केवल प्रदर्शन उद्देश्यों के लिए है और इसमें कोई अवैध या उल्लंघन करने वाली गतिविधियों को शामिल नहीं किया गया है। हम इस ब्लॉग या तृतीय-पक्ष लिंक से जानकारी के उपयोग के लिए सभी देयता को कोई गारंटी नहीं देते हैं और सभी देयता का खुलासा करते हैं। किसी भी स्क्रैपिंग गतिविधियों में संलग्न होने से पहले, अपने कानूनी सलाहकार से परामर्श करें और लक्ष्य वेबसाइट की सेवा की शर्तों की समीक्षा करें या आवश्यक अनुमतियाँ प्राप्त करें।



