概要
webスクレイピングしてますか?
色々なサイトをPlaggerで取得しようとしていたらxpathがマッチしないサイトがありました。
そこではどうも使っているTagの中にsectionという物を利用しているようでした。
今使っているHTML::Tagsetではsectionを認識してくれません。でwebを漁っているとどうやらここで紹介されているパッチを当てれば使えるようになるという情報を見つけました。
ただパッチを当てようとするとどうもバージョン違いのようで行が合いません。
そこで内容を一つづつ変更してパッチを作り直しました。
HTML5化仮パッチ
HTML::Tagsetのソースを探して下さい。Tagset.pmという名前で登録されているはずです。ちなみにバージョンはcpanサイトに登録されている最新の@3.2.0です。
そこに次のtagset.patchという名前でファイルを作成してください。
--- Tagset.pm.org 2021-07-06 00:04:07.835480459 +0900 +++ Tagset.pm 2021-07-06 00:38:26.494848477 +0900 @@ -95,6 +95,7 @@ 'a' => ['href'], 'applet' => ['archive', 'codebase', 'code'], 'area' => ['href'], + 'audio' => ['src'], 'base' => ['href'], 'bgsound' => ['src'], 'blockquote' => ['cite'], @@ -115,10 +116,13 @@ 'object' => ['classid', 'codebase', 'data', 'archive', 'usemap'], 'q' => ['cite'], 'script' => ['src', 'for'], + 'source' => ['src'], 'table' => ['background'], 'td' => ['background'], 'th' => ['background'], 'tr' => ['background'], + 'track' => ['src'], + 'video' => ['poster'], 'xmp' => ['href'], ); @@ -185,6 +189,7 @@ wbr nobr blink font basefont bdo spacer embed noembed + time mark ruby rp rt bdi bdo ); # had: center, hr, table @@ -253,7 +258,7 @@ =cut %isFormElement = map {; $_ => 1 } - qw(input select option optgroup textarea button label); + qw(input select option optgroup textarea button label keygen output progress meter ); =head2 hashset %HTML::Tagset::isBodyMarkup @@ -285,6 +290,10 @@ table center form + + section nav article aside hgroup figure + param video audio source track canvas + details summary command menu ), keys %isFormElement, keys %isPhraseMarkup, # And everything phrasal @@ -313,7 +322,7 @@ %isKnown = (%isHeadElement, %isBodyElement, map{; $_=>1 } qw( head body html - frame frameset noframes + frame frameset noframes figcaption ~comment ~pi ~directive ~literal )); # that should be all known tags ever ever
そして元ファイルを取っておくためコピーしときます。
# cp Tagset.pm Tagset.pm.org
その後
# patch -u Tagset.pm < tagset.patch
でパッチを当てます。
パッチ後の動作確認
色々なサイトでHTML5で書かれている所があると思います。私は引っかかったのがsectionタグでしたのでチェックしてみました。
無事マッチしてくれるようになりましたので問題無さそうです。
他にもこのパッチで追加されているのでいい感じに処理できると思います。
コメント