কোনও ওয়েবসাইটের সমস্ত লিঙ্ক / পৃষ্ঠা কীভাবে সন্ধান করবেন


100

কোনও প্রদত্ত ওয়েবসাইটে সমস্ত পৃষ্ঠা এবং লিঙ্কগুলি খুঁজে পাওয়া সম্ভব? আমি একটি URL লিখতে এবং সেই সাইট থেকে সমস্ত লিঙ্কের একটি ডিরেক্টরি ট্রি তৈরি করতে চাই?

আমি এইচটি ট্র্যাক দেখেছি কিন্তু এটি পুরো সাইটটি ডাউনলোড করে এবং আমার কেবল ডিরেক্টরি ট্রি প্রয়োজন।


4
crawlmysite.in - সাইট উপস্থিত নেই
সারা গাছগুলি

উত্তর:


70

লিঙ্কচেকার দেখুন —এটি সাইটটি ক্রল করবে (মান্য করার সময় robots.txt) এবং একটি প্রতিবেদন তৈরি করবে। সেখান থেকে আপনি ডিরেক্টরি ট্রি তৈরির জন্য কোনও সমাধান স্ক্রিপ্ট আপ করতে পারেন।


আপনাকে অনেক ধন্যবাদ হ্যাঙ্ক! নিখুঁত - ঠিক আমার যা প্রয়োজন ছিল খুব বেশি প্রশংশিত.
জোনাথন লিয়ন

4
একটি দুর্দান্ত সরঞ্জাম আমি "এক্সএনইউ লিঙ্ক স্যুথ আগে" ব্যবহার করছিলাম। লিঙ্কচেকার অনেক বেশি ভার্জোজ।
মেটেং

আমি নিজে কীভাবে করব? এবং যদি কোনও ওয়েবসাইটে কোনও রোবট.টিএসটিএস না থাকে তবে কী হবে?
অ্যালান করোমানো

4
@ মারিয়াসকাভানস্কি আপনি কীভাবে কোনও ওয়েবসাইট ক্রল করবেন? বা আপনি কিভাবে একটি ক্রলার তৈরি করবেন? আমি নিশ্চিত না যে আমি আপনার প্রশ্নটি বুঝতে পেরেছি। যদি কোনও robots.txtফাইল না থাকে তবে এর অর্থ হ'ল আপনি আপনার হৃদয়ের সামগ্রীতে ক্রল করতে পারেন।
হ্যাঙ্ক গে

8
হাই ছেলেরা, আমি যখন স্ক্যানটি স্ক্যান করি তখন লিঙ্কচেকার আমার পক্ষে কাজ করে না যখন এটি কেবল ভাঙা লিঙ্কগুলির একটি প্রতিবেদন দেয়। খুব ছোট রিপোর্ট। যখন তারা এটি করে এটি কয়েক হাজার লিঙ্ক চেক করেছে তবে সেগুলি কোথায় রিপোর্ট করা হয়েছে তা আমি দেখতে পাচ্ছি না। 9.3 সংস্করণ ব্যবহার করে আপনি সাহায্য করতে পারেন?
জয়পেক্স

46

আপনার ব্রাউজারে যদি বিকাশকারী কনসোল (জাভাস্ক্রিপ্ট) থাকে তবে আপনি এই কোডটি টাইপ করতে পারেন:

urls = document.querySelectorAll('a'); for (url in urls) console.log(urls[url].href);

সংক্ষিপ্ত:

n=$$('a');for(u in n)console.log(n[u].href)

4
"জাভাস্ক্রিপ্ট-এডি" ইউআরএলগুলি সম্পর্কে কী?
পেসারিয়ার

কিসের মত? আপনি কি বোঝাতে চেয়েছেন?
ইলেক্ট্রোবিট

4
আমি জাভাস্ক্রিপ্ট ব্যবহার করে একটি লিঙ্ক বোঝাচ্ছি। আপনার সমাধান এটি প্রদর্শিত হবে না।
পেসারিয়ার

4
পছন্দ করুন $$অপারেটর কী ? বা এটি কি কেবল একটি স্বেচ্ছাসেবী ফাংশন নাম,n=ABC(''a'); আমি কীভাবে urlsসমস্ত 'ক' ট্যাগ থাকা উপাদানগুলি বুঝতে পারি তা বোঝার মতো নয় । তুমি কি ব্যাখ্যা করতে পারো? আমি ধরে নিচ্ছি এর jQuery নয়। আমরা কি প্রোটোটাইপ লাইব্রেরি ফাংশন কথা বলছি?
জিপজিট

4
@zipzit ব্রাউজারের একটি থাবা সালে $$()মূলত জন্য সাধারণভাবে সংক্ষেপে হয় document.querySelectorAll()। এই লিঙ্কে আরও তথ্য: বিকাশকারী.মোজিলা.আর.ইন-
ইউএস

2

অন্য বিকল্প হতে পারে

Array.from(document.querySelectorAll("a")).map(x => x.href)

আপনার $$(এমনকি আরও খাটো সঙ্গে

Array.from($$("a")).map(x => x.href)

প্লাস 1 - এর মতো আপনি আধুনিক জেএস ব্যবহার করছেন। আমি এই প্রোগ্রামটি চালিয়েছি, এবং এটি কয়েকটি লিঙ্ক ফেরত দেওয়ার সময়, এটি শীর্ষ স্তরে থাকা সমস্ত .html পৃষ্ঠাগুলি ফিরিয়ে আনেনি। অ্যারে তালিকায় সমস্ত পৃষ্ঠা ফিরে না আসার কারণ আছে? ধন্যবাদ
ক্রিস

0

যদি এটি কোনও প্রোগ্রামিংয়ের প্রশ্ন হয় তবে আমি আপনাকে পুনরুদ্ধারকৃত সমস্ত বিষয়বস্তু বিশ্লেষণ করতে নিজের নিয়মিত অভিব্যক্তি লেখার পরামর্শ দেব। টার্গেট ট্যাগগুলি স্ট্যান্ডার্ড এইচটিএমএলের জন্য আইএমজি এবং এ। জাভা জন্য,

final String openingTags = "(<a [^>]*href=['\"]?|<img[^> ]* src=['\"]?)";

এটি প্যাটার্ন এবং ম্যাচার ক্লাসগুলির সাথে ট্যাগগুলির শুরুটি সনাক্ত করতে হবে। আপনিও সিএসএস চাইলে লিঙ্ক ট্যাগ যুক্ত করুন।

যাইহোক, আপনি অন্তর্নিহিত ভাবা হিসাবে এটি সহজ নয়। অনেক ওয়েব পৃষ্ঠাগুলি সুগঠিত নয়। সমস্ত লিঙ্ককে কর্মসূচী থেকে বের করে নেওয়া যে মানব যদি সমস্ত অনিয়মিত বহিঃপ্রকাশ বিবেচনায় নেওয়ার প্রয়োজন হয় তবে মানুষ "চিনতে পারে" সত্যিই কঠিন difficult

শুভকামনা!


19
না না না না, রেগেক্সের সাহায্যে এইচটিএমএল বিশ্লেষণ করবেন না , এটি বেবি যিশুকে কাঁদিয়ে তোলে!
ডিমো 414

-2
function getalllinks($url) {
    $links = array();
    if ($fp = fopen($url, 'r')) {
        $content = '';
        while ($line = fread($fp, 1024)) {
            $content. = $line;
        }
    }
    $textLen = strlen($content);
    if ($textLen > 10) {
        $startPos = 0;
        $valid = true;
        while ($valid) {
            $spos = strpos($content, '<a ', $startPos);
            if ($spos < $startPos) $valid = false;
            $spos = strpos($content, 'href', $spos);
            $spos = strpos($content, '"', $spos) + 1;
            $epos = strpos($content, '"', $spos);
            $startPos = $epos;
            $link = substr($content, $spos, $epos - $spos);
            if (strpos($link, 'http://') !== false) $links[] = $link;
        }
    }
    return $links;
}

এই কোডটি চেষ্টা করুন ....


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

4
হ্যাঁ, এটি কিছুটা দীর্ঘ।
ইলেক্ট্রোবিট

4
এইচটিএমএলকে এইভাবে পিএইচপি করার জন্য সম্পূর্ণ অপ্রয়োজনীয়। php.net/manual/en/class.domdocament.php পিএইচপি ডিওএম বোঝার ক্ষমতা রাখে!
জেমসএইচ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.