あなたのサイトの壊れたリンクを見つける速いスクリプト🎯


このポストは、私の個人的なウェブサイト、xtrp.ioどこで私について読んで、私のプロジェクトをチェックアウトすることができます元からです.

導入


インターネット上のほとんどすべての他のクリックが「エラー404 :ページが見つかりません」ページで終わるようです.「おお、あなたが捜しているページは存在しません」、「申し訳ありません、要請されたURLはこのサーバーで見つかりませんでした」「Oops、何かが間違っていました.ページは見つかりませんでした.」すべてのインターネットユーザーは、これらのようなページを見ました.
私は、ウェブ開発者が巧妙な404ページを造ることにあまり注意を払わないと考えるのが重要であると思います、そして、完全に壊れたリンクを排除し始めます.

プログラム


壊れたリンクを見つけるために自動プログラムを構築しました.

Python 3で書かれ、再帰的に任意のサイト上のリンクに従って404エラーのそれぞれをチェックします.プログラムがサイト全体を検索し終えたとき、それはどんな発見された壊れたリンクも出力します、そして、それらのリンクがどこで開発者がそれらを固定することができるように.
プログラムは多くのHTTPリクエストを比較的短い期間に作りますので、インターネット使用率などを意識してください.

用途

  • あなたがPython 3をインストールしたかどうかチェックしてください
    以下のコマンドがバージョン番号を与えない場合は、python.orgからPython 3をダウンロードします.
    $ python3 -V
    
  • Pypiを使用してリクエストとBeautiFropパッケージをダウンロードします.
  • (注:私はこれらのパッケージを維持しておらず、自分のリスクでダウンロードします)
    $ pip3 install requests
    $ pip3 install beautifulsoup4
    
  • copy以下のコードをファイルに貼り付けるfind_broken_links.py本稿では
  • import requests
    import sys
    from bs4 import BeautifulSoup
    from urllib.parse import urlparse
    from urllib.parse import urljoin
    
    searched_links = []
    broken_links = []
    
    def getLinksFromHTML(html):
        def getLink(el):
            return el["href"]
        return list(map(getLink, BeautifulSoup(html, features="html.parser").select("a[href]")))
    
    def find_broken_links(domainToSearch, URL, parentURL):
        if (not (URL in searched_links)) and (not URL.startswith("mailto:")) and (not ("javascript:" in URL)) and (not URL.endswith(".png")) and (not URL.endswith(".jpg")) and (not URL.endswith(".jpeg")):
            try:
                requestObj = requests.get(URL);
                searched_links.append(URL)
                if(requestObj.status_code == 404):
                    broken_links.append("BROKEN: link " + URL + " from " + parentURL)
                    print(broken_links[-1])
                else:
                    print("NOT BROKEN: link " + URL + " from " + parentURL)
                    if urlparse(URL).netloc == domainToSearch:
                        for link in getLinksFromHTML(requestObj.text):
                            find_broken_links(domainToSearch, urljoin(URL, link), URL)
            except Exception as e:
                print("ERROR: " + str(e));
                searched_links.append(domainToSearch)
    
    find_broken_links(urlparse(sys.argv[1]).netloc, sys.argv[1], "")
    
    print("\n--- DONE! ---\n")
    print("The following links were broken:")
    
    for link in broken_links:
        print ("\t" + link)
    
  • あなたの選択のウェブサイトでコマンドラインで実行します.
  • $ python3 find_broken_links.py https://your_site.com/
    

    結論


    私はあなたがこの便利な発見を希望し、それは確かに私は私自身のサイト上のいくつかの壊れたリンクを見つける助けた.
    このプログラムはCC0 Licensedですので、完全に無料ですが、保証や保証を行います.

    このポストを与える❤️ あなたがそれを好めば!


    スクロールありがとう.
    -ガブリエル・ロムアルド、2019年11月10日
    私のブログ記事のために私の個人的なウェブサイトをチェックしてください
    注:私は以前私の偽名、フレッドアダムズの下に書いた.