নৈতিক ও ব্যয়বহুলভাবে স্কেলিং ডেটা স্ক্র্যাপগুলি


13

জীবনের কিছু জিনিস আমাকে ইন্টারনেট থেকে কাঠামোগত এবং কাঠামোগত ডেটা স্ক্র্যাপ করা এবং এটি আমার মডেলগুলিতে ব্যবহার করার মতো আনন্দ দেয়।

উদাহরণস্বরূপ, ডেটা সায়েন্স টুলকিট (বা RDSTKআর প্রোগ্রামারদের জন্য) আমাকে আইপি বা ঠিকানা ব্যবহার করে প্রচুর ভাল অবস্থান-ভিত্তিক ডেটা টানতে দেয় এবং tm.webmining.pluginআর এর tmপ্যাকেজটির জন্য আর্থিক এবং নিউজ ডেটা সোজা করে দেয়। এই জাতীয় (অর্ধ) কাঠামোগত ডেটা অতিক্রম করার সময় আমি ব্যবহার করার ঝোঁক XPath

যাইহোক, আপনি ক্রমাগত যে প্রশ্নগুলি করার অনুমতি দিয়েছেন তার সীমাবদ্ধতায় আমি ক্রমাগত থ্রোট হয়ে যাচ্ছি। আমি মনে করি গুগল প্রতি 24 ঘন্টা আমাকে প্রায় 50,000 অনুরোধের মধ্যে সীমাবদ্ধ করে, যা বিগ ডেটার জন্য সমস্যা।

প্রযুক্তিগত দৃষ্টিকোণ থেকে এই সীমাগুলির কাছাকাছি পাওয়া সহজ - কেবল আইপি ঠিকানাগুলি স্যুইচ করুন এবং আপনার পরিবেশ থেকে অন্যান্য শনাক্তকারীদের পরিষ্কার করুন pur তবে এটি নৈতিক ও আর্থিক উদ্বেগ উভয়ই উপস্থাপন করে (আমার মনে হয়?)।

এমন কোন সমাধান আছে যা আমি উপেক্ষা করছি?

উত্তর:


6

অনেকগুলি এপিআই-এর জন্য (বেশিরভাগ আমি দেখেছি) রেটলিমিটিং করা আপনার এপিআই কী বা OAuth শংসাপত্রগুলির ফাংশন। (গুগল, টুইটার, এনওএএ, ইয়াহু, ফেসবুক, ইত্যাদি) সুসংবাদটি হ'ল আপনার আইপি ফাঁকি দেওয়ার দরকার নেই, সেখানে রেট সীমাবদ্ধতার কারণে আপনাকে শংসাপত্রগুলি সরিয়ে নিতে হবে।

এখানে কিছুটা নির্লজ্জ স্ব-প্রচার প্রচার করা হয়েছে তবে আমি এই সমস্যাটি হ্যান্ডেল করার জন্য একটি অজগর প্যাকেজ লিখেছি।

https://github.com/rawkintrevo/angemilner

https://pypi.python.org/pypi/angemilner/0.2.0

এটিতে একটি মংডোব ডেমন প্রয়োজন এবং মূলত আপনি আপনার প্রতিটি কীগুলির জন্য একটি পৃষ্ঠা তৈরি করেন। সুতরাং আপনার আলাদা আলাদা কী সহ প্রত্যেককে 4 টি ইমেল ঠিকানা রয়েছে। আপনি যখন কীটি লোড করেন তখন প্রতিদিনের সর্বোচ্চ কল এবং ব্যবহারের মধ্যে সর্বনিম্ন সময় নির্দিষ্ট করে।

কীগুলি লোড করুন:

from angemilner import APIKeyLibrarian
l= APIKeyLibrarian()
l.new_api_key("your_assigned_key1", 'noaa', 1000, .2)
l.new_api_key("your_assigned_key2", 'noaa', 1000, .2)

তারপরে আপনি যখন আপনার স্ক্র্যাপারটি চালাবেন উদাহরণস্বরূপ NOAA এপিআই:

url= 'http://www.ncdc.noaa.gov/cdo-web/api/v2/stations' 
payload= {  'limit': 1000,
        'datasetid':  'GHCND', 
        'startdate': '1999-01-01' }

r = requests.get(url, params=payload, headers= {'token': 'your_assigned_key'})

হয়ে:

url= 'http://www.ncdc.noaa.gov/cdo-web/api/v2/stations'
payload= {  'limit': 1000,
            'datasetid':  'GHCND',
            'startdate': '1999-01-01' }

r = requests.get(url, params=payload, headers= {'token': l.check_out_api_key('noaa')['key']})

সুতরাং আপনার যদি 5 টি কী l.check_out_api_keyথাকে তবে কমপক্ষে ব্যবহার করা কীটি ফিরে আসে এবং এটি পুনরায় ব্যবহারের জন্য পর্যাপ্ত সময় ব্যয় না হওয়া পর্যন্ত অপেক্ষা করে।

অবশেষে আপনার কীগুলি কতবার ব্যবহৃত হয়েছে / অবশিষ্ট ব্যবহার উপলব্ধ রয়েছে তা দেখার জন্য:

pprint(l.summary())

আমি আর এর জন্য লিখিনি কারণ বেশিরভাগ স্ক্র্যাপিং অজগর (বেশিরভাগ MY স্ক্র্যাপিং) এ করা হয়। এটি সহজেই পোর্ট করা যায়।

আপনি প্রযুক্তিগতভাবে কীভাবে হার সীমাবদ্ধ করতে পারেন তা স্থায়ী ts নৈতিকভাবে ...

আপডেট করুন উদাহরণটি এখানে Google প্লেস এপিআই ব্যবহার করে


0

আইপি অ্যাড্রেস ব্লকগুলির কাছাকাছি যাওয়ার একটি দুর্দান্ত উপায় আমি পেয়েছি হ'ল অ্যামাজন এডাব্লুএস (বা আজার বা অন্য কোনও অনুরূপ অন-চাহিদা পরিষেবা)। এডাব্লুএস-এর একটি টি 2.নানো উদাহরণটি উচ্চ মানের প্রক্সি হিসাবে প্রায় একই রকম হয় এবং রেট-সীমাবদ্ধ অনুরোধগুলি ঠিক সূক্ষ্মভাবে পরিচালনা করতে সক্ষম।

উদাহরণস্বরূপ, ধরা যাক আপনাকে 100,000 পৃষ্ঠাগুলি স্ক্র্যাপ করতে হবে। এডাব্লুএস সিএলআই ব্যবহার করে, আপনার প্রোগ্রামটি স্বয়ংক্রিয়ভাবে 1,000 টি দর্শন শুরু করতে পারে। এমনকি যদি আপনাকে অনুরোধগুলির মধ্যে 2 সেকেন্ড অপেক্ষা করতে হয় তবে আপনি 200 সেকেন্ডের মধ্যেও শেষ করতে পারেন। এবং আপনি এর জন্য কত মূল্য দিতে পারেন?

এই মুহুর্তে একটি t2.nano উদাহরণস্বরূপ দাম $ কেয়ামত প্রতি 0,0058 ডেস্কটপ AWS এর ওহিও অঞ্চলে। এক হাজার উদাহরণস্বরূপ, এটি প্রতি ঘন্টা মাত্র $ 5.8। তবে আপনার পুরো ঘন্টা দরকার নেই। আপনার 100,000 পৃষ্ঠাগুলির কাজ 200 সেকেন্ডেরও কম সময়ে শেষ হয়েছে। স্ক্রিপ্ট সেট আপ করতে, প্রয়োজনীয় প্যাকেজগুলি ইনস্টল করার জন্য, ফলাফলগুলি জিপ করে আপনার সার্ভার / পিসিতে ডাউনলোড করার জন্য কিছু অতিরিক্ত সময় যুক্ত করুন এবং আপনি এখনও প্রতি উদাহরণে সার্ভার সময় 10 মিনিটের বেশি ব্যবহার করেছেন।

বা প্রায় এক ডলার। এক ডলারের জন্য 200 সেকেন্ডে 100,000 পৃষ্ঠা। খারাপ না.

দ্রষ্টব্য: এই জাতীয় স্কেলিংয়ের সময়, আপনাকে দুর্ঘটনাক্রমে স্ক্র্যাপিং লক্ষ্যটি ওভারলোড না করা সম্পর্কে খুব সতর্ক থাকতে হবে। আপনি যদি কোনও একক ওয়েবসাইটে এত বেশি ফায়ারপাওয়ার চালিয়ে যান তবে এটি প্রতি বিকল্প সেকেন্ডে সার্ভারের সাথে প্রায় এক হাজার অনুরোধ রইল। বেশিরভাগ ওয়েবসার্ভারকে হত্যা করা যথেষ্ট। সুতরাং আপনার 1,000 টি সার্ভার বিকল্পটি যদি আপনার সাইটের বিবিধ তালিকা থাকে তবে আপনার ধারণাটি ভাল ধারণা হতে পারে তবে আপনি যদি কোনও একক সাইটকে হিট করছেন তবে আপনাকে সম্ভবত সর্বোচ্চ 10-20 সার্ভার ব্যবহার করতে হবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.