HTMLパーサ-行方不明の資産と壊れたリンクのためにHTMLファイルをスキャンする方法


こんにちは、コーダ.
記事は、私が実際のプロジェクトのファイルを使用する前に、不足している資産と壊れたリンクのために静的にHTMLファイルを分析するのに用いている単純な、オープンソースツールを提示します.このHTMLパーサーは基本的に美しいスープの上のpython 3ラッパー、HTMLファイルとXMLSのための一般的なOSS構文解析ライブラリです.ソースコードは、EULAライセンスの下でリリースされたGithubにあります.

Thank you! Content provided by AppSeed - App Generator.


機能
  • オープンソース- elearningのために使用することができます
  • すべてのHTMLファイルをスキャン
  • 各ページの行方不明の資産を検出
  • 壊れたリンクを検出し、正しいパスを提案する
  • 許容できる実行時間

  • Html Parser - ソースコード

  • Sample Output - 実際のプロジェクトからキャプチャ

  • EULA License - ソロ開発者、中小企業、スタートアップ、およびNGO

  • ツールを使うには2つのものを指定する必要があります.
  • HTMLファイルが保存されるフォルダ
  • すべてのJS、CSS、イメージ..
  • この簡単な設定をしたら、端末でスクリプトを呼び出すことができます.
    $ python ./check-assets.py
    

    HTMLパーサ-関連する部分


    情報をスキャンして、相関させるために、ツールはいくつかの構造を使用して、関連情報を保存して、再利用して、また、検出されたHTMLファイルの上で単純な操作を実行します.
    ホットイットワークス
  • キーがファイル名である地図を定義する
  • 関連する情報が格納され更新される各ファイルにデータ構造を関連付ける
  • 各HTMLファイルのプロパティとリンクをスキャンされて
  • 各ファイルの情報を検証し、ディスクを見て行方不明の資産を保存する
  • ソースコード


    関連する関数とコードチャンクは以下の通りです.何か関連が不足しているならば、コメントセクションでそれを尋ねてください.
    ディレクトリからファイルを読み込む
    def get_files( aPath ):
    
        FILES_LIST = [] 
        for (root, dirs, files) in walk( aPath ):
            FILES_LIST.extend( files )
            break
    
        return FILES_LIST
    
    各ファイルの情報を保存する構造/クラス
    class TMPL:
    
        # constructor
        def __init__(self, aFile=''):
    
            self.file      = aFile
            self.title     = ''
            self.css       = [] # All CSS Files
            self.js        = [] # All JS Files
            self.img       = [] # All Images
            self.links     = [] # All Links
    
            self.err       = [] # used to report missing assets
            self.err_links = [] # used to report missing assets
    
        # Used to have a string representation 
        def __repr__(self):
            return "" + self.file + ' some other info'
    
    各ファイルの美しいスープオブジェクトを開始する
    def get_bs( aFile ):
    
      minified = htmlmin.minify( file_load( aFile ), remove_empty_space=True)
      return bs(minified,'html.parser')
    
    スキャンの各ファイルのリンクと資産
    結果は各ファイルに関連する構造体に注入される.
    # BS object is constructed and available for queries  
    soup = get_bs( FULL_PATH )
    
    # Scan for CSS files
    tmpl.css = get_css( soup )
    
    # # Scan for JS files
    tmpl.css = get_js( soup )
    
    ...
    
    
    リンクと画像は、単純なヘルパーを使用して同じ方法でスキャンされます.
    情報が保存されると、BSオブジェクトを使用してDOMを横断し、要素上の突然変異を実行できます.

    HTMLパーサー-サンプル出力


    実際の生産出力を可視化するには、パブリックリポジトリに保存されたサンプルファイルにアクセスしてください.check assets - output
    (env) PS > python.exe .\check-assets.py
    
     Files (2)
    ['apps-calendar.html', 'index.html']
    
     ***** ***** *****
    
     PROCESSING --> apps-calendar.html | files (1) remaining
     PROCESSING --> index.html | files (0) remaining
     PROCESSING --> apps-calendar.html
     ERR - Missing Asset -> /static/assets/css/classic-horizontal/style-ERROR.css
     ERR - Missing Asset -> /static/assets/images/logo-mini-ERROR.svg
     PROCESSING --> index.html
     ERR - Missing Asset -> /static/assets/images/favicon-ERROR.png
        |
        |- apps-calendar.html
        |    |
        |    |--- CSS: 6 file(s)
        |          | /static/assets/vendors/mdi/css/materialdesignicons.min.css
        |          | /static/assets/vendors/css/vendor.bundle.base.css
        |          | /static/assets/vendors/fullcalendar/fullcalendar.min.css
        |          | /static/assets/css/classic-horizontal/style.css
        |          | /static/assets/css/classic-horizontal/style-ERROR.css
        |          | /static/assets/images/favicon.png
        |     
    ...
    
    Pages with errors: 2
        |
        |- apps-calendar.html
        |    |     | /static/assets/css/classic-horizontal/style-ERROR.css
        |    |     | /static/assets/images/logo-mini-ERROR.svg
        |
        |- index.html
        |    |     | /static/assets/images/favicon-ERROR.png
    
    ツールは簡単に既存のコアを使用してライブウェブサイトに拡張することができます.いずれかの場合に便利な、コメントのセクションで機能を提案するか、またはGithubの広報を押してください.

    Thank you! - For more resources, please access:


  • Beautiful Soup - 官庁長官

  • AppSeed - より多くのツールとスターター
  • Btw, my (nick) name is Sm0ke and I'm pretty active also on .