উত্স পৃষ্ঠার প্রথম কয়েকটি বাইট ডাউনলোড করুন


9

cURLকমান্ড ব্যবহার করে একটি ওয়েবসাইটের এইচটিএমএল উত্স পৃষ্ঠাটি ডাউনলোড করছি । সমস্যাটি হচ্ছে, আমি পৃষ্ঠাটির বেশিরভাগ বিষয়বস্তু চাই না। আমার উত্স পৃষ্ঠার প্রথম 100 লাইন দরকার। প্রথম কয়েকটি লাইনের পরে পৃষ্ঠাটি ডাউনলোড বন্ধ করার কোনও উপায় আছে কি?

বর্তমানে আমার কাছে নীচের কমান্ডটি কাজ করছে তবে এটি সময় কার্যকর বলে মনে হচ্ছে না।

curl -r[0-1] "http://www.freebase.com/m/045c7b" > foo.txt

আমি থেকে মান পরিবর্তন চেষ্টা 1করতে .5এবং .05এবং এখনও সমগ্র ওয়েবপৃষ্ঠাটি ডাউনলোড করা হচ্ছে।

আমি উপরের কমান্ডটি কার্যকর করতে একটি সেকেন্ডের চেয়েও কম সময় দেখছি।

সম্পাদনা

ম্যান পেজ থেকে cURL, আমি দেখতে পাচ্ছি যে " আপনারাও সচেতন হওয়া উচিত যে অনেক এইচটিটিপি / 1.1 সার্ভারের এই বৈশিষ্ট্যটি সক্ষম করা নেই, যাতে আপনি যখন একটি পরিসীমা পাওয়ার চেষ্টা করেন, আপনি পরিবর্তে পুরো নথিটি পেয়ে যাবেন। " সুতরাং যদি সার্ভারটি ব্যাপ্তি অনুসন্ধানকে সমর্থন করছে না, nixপরিবেশে এমন কি আরও কিছু কমান্ড রয়েছে যা আমাকে যা করতে চেষ্টা করছে তা সফল করতে সহায়তা করবে?

উত্তর:


6

আপনি ব্যবহার করতে পারেন headএবং কোনও পৃষ্ঠার অংশ ডাউনলোড করতে -sস্যুইচ করতে curlপারেন। headআপনার আউটপুটের কত লাইন চান তা কেবল বলুন ।

উদাহরণ

$ curl -r[0-1] "http://www.freebase.com/m/045c7b" -s 2>&1 | head -10
Warning: Invalid character is found in given range. A specified range MUST 
Warning: have only digits in 'start'-'stop'. The server's response to this 
Warning: request is uncertain.


  <!DOCTYPE html PUBLIC "null" "null">
  <html class="no-js" dir="ltr" lang="en">
    <head>
      <meta charset="utf-8">
      <title>

বিস্তারিত

  • -10থেকে head10 টি লাইন আসতে হবে এবং তারপর বন্ধ। আপনি যদি আরও চান তবে এটি আপনার প্রয়োজন অনুসারে পরিবর্তন করুন।
  • -sসুইচ curlবলে তাই এটি প্রগতি দণ্ড যখন ডাউনলোড প্রদর্শন করবে না এটা নীরব যাবে।

1
সামগ্রীগুলি ডাউনলোড করতে এখনও এটি যথেষ্ট সময় নেয়। আমি এটির জন্য মিলি সেকেন্ডে একটি সময়সীমা আশা করছিলাম।
রমেশ

@ রামেশ - হ্যাঁ আমি লক্ষ্য করেছি এটি বরং ধীর ছিল। সার্ভারটির উত্তর দেওয়ার জন্য কিছু সময় নিবে বলে মনে হচ্ছে।
slm

: - @Ramesh বরং তারপর সাইট এ curl ব্যবহার করে যেতে আপনি এপিআই কটাক্ষপাত করা করতে চাইবেন developers.google.com/freebase
SLM

হুঁ, মজার আমার বন্ধু পরামর্শ দিচ্ছিল যে জাভাতে তিনি যদি ফ্রিবেস এপিআই ব্যবহার করেন তবে ডেটা ডাউনলোড করতে 300 এমএস লাগবে। আমি তাকে বলেছিলাম শেল স্ক্রিপ্ট ব্যবহার করে এটি যথেষ্ট পরিমাণে হ্রাস করা যায়। এটি শেল কমান্ডের চেয়ে সার্ভারে সমস্যা বলে মনে হচ্ছে।
রমেশ

@ রামেশ - হ্যাঁ এক্ষেত্রে স্লোতাটি ডাটাবেস ক্যোয়ারীতে এবং সেই তথ্যটিকে একটি প্রতিক্রিয়া হিসাবে প্রস্তুত করার ক্ষেত্রে। ডাটাবেস যদি অন্য ফর্ম্যাটে ডেটাটি কেবল জেএসওএন হিসাবে প্রকাশ করে তবে আপনি আউটপুটটিকে এইচটিটিপি হিসাবে না নিয়ে ব্যবহার করে প্রতিক্রিয়াটি ত্বরান্বিত করতে পারেন। এইচটিটিপি হিসাবে প্রতিক্রিয়া প্রস্তুত করার ক্ষেত্রে ওভারহেড রয়েছে যে শেষটি ব্যবহারের ফলাফলগুলি পড়তে কোনও মানুষ হয়ে উঠবে না তা যদি নষ্ট হয়।
slm

1

আমি এখনও এই বিশেষ অ্যাপ্লিকেশনটি সত্যিই পরীক্ষা করে দেখিনি, তবে কিছু আমাকে বলে যে আপনি এখানে ডিডি এবং এনসি জোড় করতে পারেন:

$ nc www.website.com 80 <<GOT | dd bs=$BYTE_COUNT iflag=fullblock \
     count=1 of=$OUTFILE
GET / HTTP/1.1
Host: ispconfig.org
Referrer: mypage.com
User-Agent: my-browser
$(printf %b '\r\r')
GOT

ncঅনুরোধ শিরোনামগুলি পেতে সরাসরি নেটক্যাট ( ) এর জন্য আরও কনফিগারেশন প্রয়োজন হতে পারে তবে এটি যদি কোনও সর্বজনীন সাইট হয় তবে যদি আপনি চেষ্টা করার মতো যথেষ্ট যত্নবান হন তবে আপনাকে একটি কার্যকর আউটপুট ফিনগল করতে সক্ষম হওয়া উচিত। অবশ্যই ডিডি আপনার নির্দিষ্ট হিসাবে এবং প্রস্থান হিসাবে কেবলমাত্র ইনপুট নেবে, যা নেটকাট সাইনপ করবে যাতে তা অবিলম্বে মামলা অনুসরণ করবে। একমাত্র আসল কৌশলটি প্রাথমিক হ্যান্ডশেকটি আয়রন করছে - একবার আপনি স্ট্রিমটি শুরু করলে আপনি যখনই চান পছন্দসই ড্রপ করতে পারেন।

সম্পাদনা

এসএমএলের মন্তব্যগুলি পড়ার ফলে আমাকে সেই গতি দ্বিতীয় স্থানে নিয়ে আসে; আপনি যদি সঠিক ফর্ম্যাটে কোনও জন্সন পোস্টকে সিরিয়ালাইজ করতে পারেন তবে এটি আরও সময়োচিত প্রতিক্রিয়া জানার উপায় definitely পার্সিং এইচটিএমএল যাইহোক, পাখিদের জন্য।

এই প্রান্তে একটি কার্যকর কৌশল হ'ল আপনার ব্রাউজারে সার্ভারের সাথে যোগাযোগ করার সময় আপনার নেটওয়ার্ক স্ট্রিমটি ক্যাপচার করা, তারপরে যখন আপনার ব্রাউজারটি পোষ্ট প্রেরণ করে তবে আপনি পরিবর্তে এটি জিইটি হিসাবে কী পাঠাতে চান তা পান এবং ফলাফলগুলি একবার দেখুন।


1

headকমান্ড সাধারণত ডাউনলোড করা বন্ধ করে দেবে আগেই শেষ হয় (আগে পাইপ বন্ধ করা হয়, যদিও সংক্ষিপ্ত ফাইলের জন্য এটা নল বাফার ভরাট হতে পারে)। এটি কারণ যখন কোনও পাইপ বন্ধ থাকে তখন curlলেখার মতো কোথাও থাকে না (ফাইল বিবরণী বন্ধ থাকে, লিখতে ব্যর্থ হয়)।

যাইহোক, আমার অভিজ্ঞতায়, ডাউনলোড করার সময় দীর্ঘতম জিনিসটি ডিএনএস অনুরোধগুলির জন্য অপেক্ষা করছে (আপনি ক্রমশ শত শত ফাইল ডাউনলোড করার সময় বেদনাদায়ক)। এটি কোনও স্থানীয় ডিএনএস ক্যাশে যেমন dnsmasqবা আপনি যদি একই ডিরেক্টরি ডোমেন নামটি বিভিন্ন ডিরেক্টরি কাঠামোর সাহায্যে বহুবার ব্যবহার করে থাকেন তবে এটি একবার আইপি সমাধান করুন এবং ইউআরএল প্রতিস্থাপন করুন helped

আমার বক্তব্য প্রমাণ করার জন্য ... time netstatবনাম চেষ্টা করুন time netstat -n(ক্যাশে ছাড়াই পার্থক্যটি নাটকীয়, ক্যাশে সহ, এটি প্রথমবারের মধ্যে কেবল খারাপ, তারপরে এটি মনে পড়ে)।

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