Perl の WWW::Mechanize ライブラリを使用して、Web サイトからコンテンツをスクレイピングしています。しかし、Web ページの元の HTML ソース コードと WWW::Mechanize によって解析されるものが異なることに気付きました。この結果、スクリプトの一部の機能が壊れてしまいます。
したがって、ここにスクリプトがあります(エラー/問題を示すためのサブセットです)
#! /usr/bin/perl
use WWW::Mechanize;
use warnings;
$mech=WWW::Mechanize->new();
$mech->stack_depth(0);
$url="http://www.example.com";
$mech->get($url);
print $mech->content;
短くシンプルなコードで、Web サイトに接続し、HTML ページ全体を取得します。
スクリプトを実行し、出力をテキスト ファイルにリダイレクトして、分析できるようにします。
perl test.pl >> source_code.txt
ここで、source_code.txt とブラウザ (Firefox) で表示される Web サイトの実際のソース コードを比較すると、違いがあります。
例えば:
<tr>
<td nowrap="nowrap">This is Some Text</td>
<td align="right"><a href="http://example.com?value=key">Some more Text</a></td>
</tr><tr>
上記のソース コードは、ブラウザで観察されるものです。(ページのソース機能を表示)
ただし、テキスト ファイルでは、source_code.txt (WWW::Mechanize によって生成されます)
それが示している:
<tr>
<td nowrap="nowrap">This is some text</td>
<td align="right">This is some more text</td>
</tr><tr>
ご覧のとおり、2 番目のタグ セットの間にネストされていたアンカー タグが削除されました。
これは既知の問題ですか、それともソース コードを表示するには $mech->content 以外のものを使用する必要がありますか?
ありがとう。